{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# read in data，数据在xgboost安装的路径下的demo目录,现在我们将其copy到当前代码下的data目录\n",
    "dpath = ''\n",
    "train = pd.read_csv(dpath + 'RentListingInquries_FE_train.csv')\n",
    "test = pd.read_csv(dpath + 'RentListingInquries_FE_test.csv')\n",
    "\n",
    "train.describe()\n",
    "train_all  = train\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 49352 entries, 0 to 49351\n",
      "Columns: 228 entries, bathrooms to interest_level\n",
      "dtypes: float64(9), int64(219)\n",
      "memory usage: 85.8 MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 尝试跑过满的数据集……但是最后参数落在了边缘，时间太长了= =，所以不得以跑个小的数据集完成作业，表达下对课程的理解，望海涵。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 将多个文件合并成了一个，使用global保留全局最优的变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "train = train.head(1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.00000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>1000.00000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>1000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.205000</td>\n",
       "      <td>1.548000</td>\n",
       "      <td>3578.337000</td>\n",
       "      <td>1590.049502</td>\n",
       "      <td>1556.66580</td>\n",
       "      <td>-0.343000</td>\n",
       "      <td>2.753000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.194000</td>\n",
       "      <td>15.699000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.004000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.17700</td>\n",
       "      <td>0.010000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.025000</td>\n",
       "      <td>0.003000</td>\n",
       "      <td>0.001000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.593000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.474025</td>\n",
       "      <td>1.099502</td>\n",
       "      <td>1934.824907</td>\n",
       "      <td>594.953686</td>\n",
       "      <td>720.15665</td>\n",
       "      <td>0.932051</td>\n",
       "      <td>1.413679</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.592212</td>\n",
       "      <td>8.119996</td>\n",
       "      <td>...</td>\n",
       "      <td>0.063151</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.38186</td>\n",
       "      <td>0.099549</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.156203</td>\n",
       "      <td>0.054717</td>\n",
       "      <td>0.031623</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.630673</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1250.000000</td>\n",
       "      <td>625.000000</td>\n",
       "      <td>500.00000</td>\n",
       "      <td>-4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2500.000000</td>\n",
       "      <td>1224.875000</td>\n",
       "      <td>1050.00000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3096.000000</td>\n",
       "      <td>1500.000000</td>\n",
       "      <td>1358.62500</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.500000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4031.000000</td>\n",
       "      <td>1800.000000</td>\n",
       "      <td>1900.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>4.500000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>22000.000000</td>\n",
       "      <td>6750.000000</td>\n",
       "      <td>6650.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         bathrooms     bedrooms         price  price_bathrooms  \\\n",
       "count  1000.000000  1000.000000   1000.000000      1000.000000   \n",
       "mean      1.205000     1.548000   3578.337000      1590.049502   \n",
       "std       0.474025     1.099502   1934.824907       594.953686   \n",
       "min       0.000000     0.000000   1250.000000       625.000000   \n",
       "25%       1.000000     1.000000   2500.000000      1224.875000   \n",
       "50%       1.000000     1.000000   3096.000000      1500.000000   \n",
       "75%       1.000000     2.000000   4031.000000      1800.000000   \n",
       "max       4.500000     5.000000  22000.000000      6750.000000   \n",
       "\n",
       "       price_bedrooms    room_diff     room_num    Year        Month  \\\n",
       "count      1000.00000  1000.000000  1000.000000  1000.0  1000.000000   \n",
       "mean       1556.66580    -0.343000     2.753000  2016.0     4.194000   \n",
       "std         720.15665     0.932051     1.413679     0.0     0.592212   \n",
       "min         500.00000    -4.000000     0.000000  2016.0     4.000000   \n",
       "25%        1050.00000    -1.000000     2.000000  2016.0     4.000000   \n",
       "50%        1358.62500     0.000000     2.500000  2016.0     4.000000   \n",
       "75%        1900.00000     0.000000     4.000000  2016.0     4.000000   \n",
       "max        6650.00000     1.000000     9.000000  2016.0     6.000000   \n",
       "\n",
       "               Day       ...               walk   walls         war  \\\n",
       "count  1000.000000       ...        1000.000000  1000.0  1000.00000   \n",
       "mean     15.699000       ...           0.004000     0.0     0.17700   \n",
       "std       8.119996       ...           0.063151     0.0     0.38186   \n",
       "min       1.000000       ...           0.000000     0.0     0.00000   \n",
       "25%       9.000000       ...           0.000000     0.0     0.00000   \n",
       "50%      15.000000       ...           0.000000     0.0     0.00000   \n",
       "75%      22.000000       ...           0.000000     0.0     0.00000   \n",
       "max      30.000000       ...           1.000000     0.0     1.00000   \n",
       "\n",
       "            washer   water   wheelchair         wifi      windows    work  \\\n",
       "count  1000.000000  1000.0  1000.000000  1000.000000  1000.000000  1000.0   \n",
       "mean      0.010000     0.0     0.025000     0.003000     0.001000     0.0   \n",
       "std       0.099549     0.0     0.156203     0.054717     0.031623     0.0   \n",
       "min       0.000000     0.0     0.000000     0.000000     0.000000     0.0   \n",
       "25%       0.000000     0.0     0.000000     0.000000     0.000000     0.0   \n",
       "50%       0.000000     0.0     0.000000     0.000000     0.000000     0.0   \n",
       "75%       0.000000     0.0     0.000000     0.000000     0.000000     0.0   \n",
       "max       1.000000     0.0     1.000000     1.000000     1.000000     0.0   \n",
       "\n",
       "       interest_level  \n",
       "count     1000.000000  \n",
       "mean         1.593000  \n",
       "std          0.630673  \n",
       "min          0.000000  \n",
       "25%          1.000000  \n",
       "50%          2.000000  \n",
       "75%          2.000000  \n",
       "max          2.000000  \n",
       "\n",
       "[8 rows x 228 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "X_train = train.drop([\"interest_level\"], axis=1)\n",
    "# X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)\n",
    "global best_n_estimator"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 寻找最佳的n_estimator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit_1(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 9\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    print(\"最佳n_estimator是：\",n_estimators)\n",
    "    global best_n_estimator\n",
    "    best_n_estimator = n_estimators\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最佳n_estimator是： 70\n"
     ]
    }
   ],
   "source": [
    "#params = {\"objective\": \"multi:softprob\", \"eval_metric\":\"mlogloss\", \"num_class\": 9}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=2000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        nthread = 4)\n",
    "\n",
    "modelfit_1(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 寻找最佳的max_step和min_child_weight"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'max_depth': range(1, 10), 'min_child_weight': range(1, 8)}\n"
     ]
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = range(1,10,1)\n",
    "min_child_weight = range(1,8,1)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "print(param_test2_1)\n",
    "\n",
    "global best_max_depth\n",
    "global best_min_child_weight"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.71035, std: 0.01238, params: {'max_depth': 1, 'min_child_weight': 1},\n",
       "  mean: -0.71126, std: 0.01280, params: {'max_depth': 1, 'min_child_weight': 2},\n",
       "  mean: -0.71123, std: 0.00999, params: {'max_depth': 1, 'min_child_weight': 3},\n",
       "  mean: -0.71277, std: 0.01010, params: {'max_depth': 1, 'min_child_weight': 4},\n",
       "  mean: -0.71376, std: 0.01028, params: {'max_depth': 1, 'min_child_weight': 5},\n",
       "  mean: -0.71520, std: 0.01064, params: {'max_depth': 1, 'min_child_weight': 6},\n",
       "  mean: -0.71397, std: 0.01082, params: {'max_depth': 1, 'min_child_weight': 7},\n",
       "  mean: -0.70401, std: 0.01566, params: {'max_depth': 2, 'min_child_weight': 1},\n",
       "  mean: -0.70283, std: 0.01580, params: {'max_depth': 2, 'min_child_weight': 2},\n",
       "  mean: -0.70555, std: 0.01367, params: {'max_depth': 2, 'min_child_weight': 3},\n",
       "  mean: -0.70456, std: 0.01482, params: {'max_depth': 2, 'min_child_weight': 4},\n",
       "  mean: -0.70554, std: 0.01582, params: {'max_depth': 2, 'min_child_weight': 5},\n",
       "  mean: -0.70520, std: 0.01438, params: {'max_depth': 2, 'min_child_weight': 6},\n",
       "  mean: -0.70430, std: 0.01422, params: {'max_depth': 2, 'min_child_weight': 7},\n",
       "  mean: -0.70927, std: 0.01784, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.70974, std: 0.01808, params: {'max_depth': 3, 'min_child_weight': 2},\n",
       "  mean: -0.70933, std: 0.01330, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.71023, std: 0.01409, params: {'max_depth': 3, 'min_child_weight': 4},\n",
       "  mean: -0.71085, std: 0.01881, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.70211, std: 0.02011, params: {'max_depth': 3, 'min_child_weight': 6},\n",
       "  mean: -0.70287, std: 0.02079, params: {'max_depth': 3, 'min_child_weight': 7},\n",
       "  mean: -0.72942, std: 0.03277, params: {'max_depth': 4, 'min_child_weight': 1},\n",
       "  mean: -0.72072, std: 0.02315, params: {'max_depth': 4, 'min_child_weight': 2},\n",
       "  mean: -0.71205, std: 0.02031, params: {'max_depth': 4, 'min_child_weight': 3},\n",
       "  mean: -0.71674, std: 0.01741, params: {'max_depth': 4, 'min_child_weight': 4},\n",
       "  mean: -0.70846, std: 0.01747, params: {'max_depth': 4, 'min_child_weight': 5},\n",
       "  mean: -0.71298, std: 0.03001, params: {'max_depth': 4, 'min_child_weight': 6},\n",
       "  mean: -0.71179, std: 0.02395, params: {'max_depth': 4, 'min_child_weight': 7},\n",
       "  mean: -0.73088, std: 0.02761, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.73016, std: 0.02291, params: {'max_depth': 5, 'min_child_weight': 2},\n",
       "  mean: -0.72892, std: 0.02993, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.72192, std: 0.02115, params: {'max_depth': 5, 'min_child_weight': 4},\n",
       "  mean: -0.71852, std: 0.02228, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.72254, std: 0.01998, params: {'max_depth': 5, 'min_child_weight': 6},\n",
       "  mean: -0.71518, std: 0.02213, params: {'max_depth': 5, 'min_child_weight': 7},\n",
       "  mean: -0.74053, std: 0.03323, params: {'max_depth': 6, 'min_child_weight': 1},\n",
       "  mean: -0.73517, std: 0.03921, params: {'max_depth': 6, 'min_child_weight': 2},\n",
       "  mean: -0.71805, std: 0.01660, params: {'max_depth': 6, 'min_child_weight': 3},\n",
       "  mean: -0.72213, std: 0.01777, params: {'max_depth': 6, 'min_child_weight': 4},\n",
       "  mean: -0.71255, std: 0.02420, params: {'max_depth': 6, 'min_child_weight': 5},\n",
       "  mean: -0.71932, std: 0.02301, params: {'max_depth': 6, 'min_child_weight': 6},\n",
       "  mean: -0.71331, std: 0.01831, params: {'max_depth': 6, 'min_child_weight': 7},\n",
       "  mean: -0.73635, std: 0.03185, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.73363, std: 0.02692, params: {'max_depth': 7, 'min_child_weight': 2},\n",
       "  mean: -0.72679, std: 0.01644, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.71593, std: 0.02482, params: {'max_depth': 7, 'min_child_weight': 4},\n",
       "  mean: -0.72386, std: 0.02345, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.70578, std: 0.01258, params: {'max_depth': 7, 'min_child_weight': 6},\n",
       "  mean: -0.71841, std: 0.01761, params: {'max_depth': 7, 'min_child_weight': 7},\n",
       "  mean: -0.75658, std: 0.03074, params: {'max_depth': 8, 'min_child_weight': 1},\n",
       "  mean: -0.73589, std: 0.02659, params: {'max_depth': 8, 'min_child_weight': 2},\n",
       "  mean: -0.71830, std: 0.03013, params: {'max_depth': 8, 'min_child_weight': 3},\n",
       "  mean: -0.71749, std: 0.01495, params: {'max_depth': 8, 'min_child_weight': 4},\n",
       "  mean: -0.71842, std: 0.02823, params: {'max_depth': 8, 'min_child_weight': 5},\n",
       "  mean: -0.71595, std: 0.01524, params: {'max_depth': 8, 'min_child_weight': 6},\n",
       "  mean: -0.72435, std: 0.02541, params: {'max_depth': 8, 'min_child_weight': 7},\n",
       "  mean: -0.74506, std: 0.03253, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.73664, std: 0.02950, params: {'max_depth': 9, 'min_child_weight': 2},\n",
       "  mean: -0.73242, std: 0.02299, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.70833, std: 0.02005, params: {'max_depth': 9, 'min_child_weight': 4},\n",
       "  mean: -0.72293, std: 0.01133, params: {'max_depth': 9, 'min_child_weight': 5},\n",
       "  mean: -0.70819, std: 0.01379, params: {'max_depth': 9, 'min_child_weight': 6},\n",
       "  mean: -0.72576, std: 0.01987, params: {'max_depth': 9, 'min_child_weight': 7}],)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "global best_n_estimator\n",
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=best_n_estimator,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        nthread = 4)\n",
    "\n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_, \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'max_depth': 3, 'min_child_weight': 6}\n",
      "70\n"
     ]
    }
   ],
   "source": [
    "global best_max_depth\n",
    "global best_min_child_weight\n",
    "print(gsearch2_1.best_params_) \n",
    "best_max_depth = gsearch2_1.best_params_['max_depth']\n",
    "best_min_child_weight = gsearch2_1.best_params_['min_child_weight']\n",
    "print(best_n_estimator)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.7021144847674295"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.10440001, 0.32220001, 0.34320011, 0.27600002, 0.32339997,\n",
       "        0.3829999 , 0.24900007, 0.57440009, 0.40619998, 0.58700008,\n",
       "        0.52020006, 0.4756    , 0.59799995, 0.5394001 , 0.6454    ,\n",
       "        0.95479999, 0.6066    , 0.58699999, 0.72200003, 0.86280003,\n",
       "        0.7046    , 0.78439999, 1.06159987, 0.88160009, 0.93739991,\n",
       "        0.8586    , 1.33659987, 0.77479987, 1.29559999, 1.29820008,\n",
       "        0.98639998, 1.02660003, 0.99399996, 1.06460009, 1.24260001,\n",
       "        1.32039995, 1.06239996, 1.52139993, 0.90839996, 1.20780001,\n",
       "        0.85240006, 1.02759995, 1.6704    , 1.48720007, 1.19379997,\n",
       "        1.25019999, 1.1882    , 1.03160005, 1.07080002, 1.44420013,\n",
       "        1.89819999, 1.08919988, 1.13579988, 1.1289999 , 1.35440001,\n",
       "        0.98959999, 1.54859986, 1.93640003, 1.09460001, 1.14980001,\n",
       "        1.2671999 , 1.02940001, 0.66939993]),\n",
       " 'std_fit_time': array([0.00475803, 0.25227717, 0.11042894, 0.07208872, 0.12559401,\n",
       "        0.23262412, 0.08943596, 0.19280207, 0.14586072, 0.30570845,\n",
       "        0.23490283, 0.16180188, 0.34512198, 0.22652201, 0.21692471,\n",
       "        0.50185433, 0.21644084, 0.21770434, 0.31519586, 0.42358484,\n",
       "        0.29782582, 0.32777832, 0.6298049 , 0.37098015, 0.34709975,\n",
       "        0.5351185 , 0.63061863, 0.32399592, 0.53718769, 0.78583748,\n",
       "        0.33351018, 0.54981292, 0.42012048, 0.36666085, 0.69864083,\n",
       "        0.47836081, 0.56278296, 0.70908574, 0.37212718, 0.54953701,\n",
       "        0.32654473, 0.49473606, 0.68718629, 0.86353907, 0.40584063,\n",
       "        0.5399731 , 0.42538801, 0.66801868, 0.41935675, 0.49099921,\n",
       "        0.99748776, 0.46340116, 0.38171737, 0.46511846, 0.67804587,\n",
       "        0.4011406 , 0.54134557, 0.96681177, 0.4529417 , 0.3819667 ,\n",
       "        0.51774015, 0.33833264, 0.15765352]),\n",
       " 'mean_score_time': array([0.00279999, 0.00639997, 0.00779991, 0.00620008, 0.0052    ,\n",
       "        0.0078001 , 0.00459991, 0.00760002, 0.00539999, 0.00719991,\n",
       "        0.00719991, 0.00820012, 0.00480008, 0.00579991, 0.00519996,\n",
       "        0.0092    , 0.00640006, 0.0072001 , 0.00799999, 0.00819998,\n",
       "        0.00860004, 0.00680008, 0.00660009, 0.00719995, 0.00680003,\n",
       "        0.00739999, 0.00759997, 0.00780005, 0.01080012, 0.00799994,\n",
       "        0.00640001, 0.00799994, 0.00860004, 0.0086    , 0.01020002,\n",
       "        0.00980005, 0.00840001, 0.00680013, 0.00779996, 0.0099999 ,\n",
       "        0.00699997, 0.0052    , 0.00900006, 0.0092    , 0.00639997,\n",
       "        0.00860004, 0.00760007, 0.00719995, 0.00620003, 0.00999985,\n",
       "        0.00799999, 0.00640011, 0.00560007, 0.00660005, 0.01359997,\n",
       "        0.00820007, 0.0072001 , 0.00760002, 0.00960002, 0.00740004,\n",
       "        0.00580006, 0.00840001, 0.00500002]),\n",
       " 'std_score_time': array([0.00039995, 0.00445416, 0.00278568, 0.00203955, 0.00193899,\n",
       "        0.00292581, 0.00119991, 0.00119994, 0.00048984, 0.00396976,\n",
       "        0.00074835, 0.00318747, 0.00074839, 0.00193904, 0.00074838,\n",
       "        0.00331052, 0.00382604, 0.0031874 , 0.00244949, 0.00203964,\n",
       "        0.00387808, 0.00160007, 0.00241657, 0.003655  , 0.00172051,\n",
       "        0.00338232, 0.00307238, 0.00391919, 0.00360001, 0.00289821,\n",
       "        0.00185456, 0.00303307, 0.00355532, 0.0018547 , 0.00396986,\n",
       "        0.0031875 , 0.0027999 , 0.0017205 , 0.00278555, 0.00379473,\n",
       "        0.00167334, 0.00097989, 0.00374162, 0.00416658, 0.00174355,\n",
       "        0.00135639, 0.00272762, 0.00386783, 0.00172042, 0.0026833 ,\n",
       "        0.00352134, 0.00135641, 0.0008    , 0.00233242, 0.00484146,\n",
       "        0.00411829, 0.00299337, 0.00257685, 0.00523843, 0.00233232,\n",
       "        0.00132663, 0.00407912, 0.00154917]),\n",
       " 'param_max_depth': masked_array(data=[1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,\n",
       "                    3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6,\n",
       "                    6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,\n",
       "                    8, 8, 9, 9, 9, 9, 9, 9, 9],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_min_child_weight': masked_array(data=[1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4,\n",
       "                    5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1,\n",
       "                    2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5,\n",
       "                    6, 7, 1, 2, 3, 4, 5, 6, 7],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'max_depth': 1, 'min_child_weight': 1},\n",
       "  {'max_depth': 1, 'min_child_weight': 2},\n",
       "  {'max_depth': 1, 'min_child_weight': 3},\n",
       "  {'max_depth': 1, 'min_child_weight': 4},\n",
       "  {'max_depth': 1, 'min_child_weight': 5},\n",
       "  {'max_depth': 1, 'min_child_weight': 6},\n",
       "  {'max_depth': 1, 'min_child_weight': 7},\n",
       "  {'max_depth': 2, 'min_child_weight': 1},\n",
       "  {'max_depth': 2, 'min_child_weight': 2},\n",
       "  {'max_depth': 2, 'min_child_weight': 3},\n",
       "  {'max_depth': 2, 'min_child_weight': 4},\n",
       "  {'max_depth': 2, 'min_child_weight': 5},\n",
       "  {'max_depth': 2, 'min_child_weight': 6},\n",
       "  {'max_depth': 2, 'min_child_weight': 7},\n",
       "  {'max_depth': 3, 'min_child_weight': 1},\n",
       "  {'max_depth': 3, 'min_child_weight': 2},\n",
       "  {'max_depth': 3, 'min_child_weight': 3},\n",
       "  {'max_depth': 3, 'min_child_weight': 4},\n",
       "  {'max_depth': 3, 'min_child_weight': 5},\n",
       "  {'max_depth': 3, 'min_child_weight': 6},\n",
       "  {'max_depth': 3, 'min_child_weight': 7},\n",
       "  {'max_depth': 4, 'min_child_weight': 1},\n",
       "  {'max_depth': 4, 'min_child_weight': 2},\n",
       "  {'max_depth': 4, 'min_child_weight': 3},\n",
       "  {'max_depth': 4, 'min_child_weight': 4},\n",
       "  {'max_depth': 4, 'min_child_weight': 5},\n",
       "  {'max_depth': 4, 'min_child_weight': 6},\n",
       "  {'max_depth': 4, 'min_child_weight': 7},\n",
       "  {'max_depth': 5, 'min_child_weight': 1},\n",
       "  {'max_depth': 5, 'min_child_weight': 2},\n",
       "  {'max_depth': 5, 'min_child_weight': 3},\n",
       "  {'max_depth': 5, 'min_child_weight': 4},\n",
       "  {'max_depth': 5, 'min_child_weight': 5},\n",
       "  {'max_depth': 5, 'min_child_weight': 6},\n",
       "  {'max_depth': 5, 'min_child_weight': 7},\n",
       "  {'max_depth': 6, 'min_child_weight': 1},\n",
       "  {'max_depth': 6, 'min_child_weight': 2},\n",
       "  {'max_depth': 6, 'min_child_weight': 3},\n",
       "  {'max_depth': 6, 'min_child_weight': 4},\n",
       "  {'max_depth': 6, 'min_child_weight': 5},\n",
       "  {'max_depth': 6, 'min_child_weight': 6},\n",
       "  {'max_depth': 6, 'min_child_weight': 7},\n",
       "  {'max_depth': 7, 'min_child_weight': 1},\n",
       "  {'max_depth': 7, 'min_child_weight': 2},\n",
       "  {'max_depth': 7, 'min_child_weight': 3},\n",
       "  {'max_depth': 7, 'min_child_weight': 4},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 6},\n",
       "  {'max_depth': 7, 'min_child_weight': 7},\n",
       "  {'max_depth': 8, 'min_child_weight': 1},\n",
       "  {'max_depth': 8, 'min_child_weight': 2},\n",
       "  {'max_depth': 8, 'min_child_weight': 3},\n",
       "  {'max_depth': 8, 'min_child_weight': 4},\n",
       "  {'max_depth': 8, 'min_child_weight': 5},\n",
       "  {'max_depth': 8, 'min_child_weight': 6},\n",
       "  {'max_depth': 8, 'min_child_weight': 7},\n",
       "  {'max_depth': 9, 'min_child_weight': 1},\n",
       "  {'max_depth': 9, 'min_child_weight': 2},\n",
       "  {'max_depth': 9, 'min_child_weight': 3},\n",
       "  {'max_depth': 9, 'min_child_weight': 4},\n",
       "  {'max_depth': 9, 'min_child_weight': 5},\n",
       "  {'max_depth': 9, 'min_child_weight': 6},\n",
       "  {'max_depth': 9, 'min_child_weight': 7}],\n",
       " 'split0_test_score': array([-0.7281306 , -0.73026047, -0.72646731, -0.72783554, -0.72854521,\n",
       "        -0.73129894, -0.73102068, -0.71896619, -0.71709652, -0.71483311,\n",
       "        -0.70914033, -0.71696059, -0.71934307, -0.71822442, -0.73294687,\n",
       "        -0.73069689, -0.72147083, -0.72969967, -0.72667432, -0.71798297,\n",
       "        -0.72371195, -0.73519718, -0.7399364 , -0.72063547, -0.72141441,\n",
       "        -0.72491077, -0.7414745 , -0.72998554, -0.71150908, -0.72518925,\n",
       "        -0.7308383 , -0.72685297, -0.7266654 , -0.72928558, -0.74019695,\n",
       "        -0.74916805, -0.74613479, -0.71942169, -0.72678938, -0.71433086,\n",
       "        -0.71154443, -0.72420057, -0.75196556, -0.74749325, -0.73664758,\n",
       "        -0.72270598, -0.73234239, -0.71425671, -0.73699542, -0.77276831,\n",
       "        -0.74339284, -0.7367727 , -0.72764269, -0.73653933, -0.71918084,\n",
       "        -0.73514988, -0.74983157, -0.76181277, -0.73802911, -0.70930755,\n",
       "        -0.72483254, -0.70649885, -0.72778353]),\n",
       " 'split1_test_score': array([-0.71335837, -0.7145096 , -0.7149072 , -0.71662708, -0.71666166,\n",
       "        -0.72171525, -0.71951144, -0.70644117, -0.7072951 , -0.71800524,\n",
       "        -0.72187499, -0.7203782 , -0.71667376, -0.71991884, -0.71467969,\n",
       "        -0.71741899, -0.72560592, -0.72269915, -0.73763708, -0.73073572,\n",
       "        -0.73139698, -0.73570508, -0.72895055, -0.72249656, -0.72751716,\n",
       "        -0.72582268, -0.74801888, -0.73464389, -0.75072267, -0.74340984,\n",
       "        -0.75243224, -0.74143128, -0.73930302, -0.74313056, -0.73659778,\n",
       "        -0.78942617, -0.78213307, -0.7322389 , -0.74192751, -0.75372398,\n",
       "        -0.75414782, -0.73095414, -0.72727585, -0.76897802, -0.74726851,\n",
       "        -0.73400638, -0.74128715, -0.70808301, -0.73621831, -0.75498561,\n",
       "        -0.74696698, -0.74076342, -0.73283366, -0.75503385, -0.73759014,\n",
       "        -0.75053952, -0.7562073 , -0.75844332, -0.72784392, -0.73855603,\n",
       "        -0.74414599, -0.72436773, -0.75053952]),\n",
       " 'split2_test_score': array([-0.71553016, -0.71325348, -0.7126121 , -0.71374594, -0.71592818,\n",
       "        -0.71276446, -0.71220995, -0.71990615, -0.71872422, -0.71396945,\n",
       "        -0.7139889 , -0.70899349, -0.71015849, -0.70751766, -0.71153689,\n",
       "        -0.72391287, -0.70885888, -0.70722839, -0.70765149, -0.68235022,\n",
       "        -0.68475236, -0.78440406, -0.74426226, -0.73611701, -0.73824091,\n",
       "        -0.71642574, -0.71800444, -0.72786938, -0.77256819, -0.76638576,\n",
       "        -0.76138979, -0.74466772, -0.7421631 , -0.74227787, -0.71508127,\n",
       "        -0.756814  , -0.76741731, -0.73314894, -0.73892432, -0.71798776,\n",
       "        -0.73647694, -0.72239293, -0.79006733, -0.74447813, -0.72319238,\n",
       "        -0.7472132 , -0.75274014, -0.72294029, -0.72254024, -0.80401551,\n",
       "        -0.77009792, -0.74878471, -0.72712527, -0.72766292, -0.72237733,\n",
       "        -0.74351116, -0.79698496, -0.75698247, -0.77225511, -0.718456  ,\n",
       "        -0.71600528, -0.72320665, -0.74351116]),\n",
       " 'split3_test_score': array([-0.70311401, -0.70740266, -0.70542287, -0.70837057, -0.71062098,\n",
       "        -0.70993196, -0.7077892 , -0.69668307, -0.69434868, -0.6993378 ,\n",
       "        -0.69862656, -0.7053498 , -0.69980715, -0.69064655, -0.70906138,\n",
       "        -0.68781592, -0.70131446, -0.69872673, -0.69164973, -0.70075837,\n",
       "        -0.69361629, -0.69586709, -0.70854421, -0.70370212, -0.70875643,\n",
       "        -0.68784026, -0.68313521, -0.69004583, -0.72422649, -0.71534718,\n",
       "        -0.72407277, -0.70784957, -0.68842504, -0.69618759, -0.68020091,\n",
       "        -0.70749513, -0.6797251 , -0.68727051, -0.69801375, -0.68536276,\n",
       "        -0.69020396, -0.70928816, -0.70331348, -0.71423976, -0.72844264,\n",
       "        -0.69588363, -0.69334013, -0.69503311, -0.69382697, -0.73664776,\n",
       "        -0.68965028, -0.69163828, -0.70526428, -0.67748508, -0.69167504,\n",
       "        -0.68090115, -0.71870638, -0.71884978, -0.72076287, -0.69567138,\n",
       "        -0.71670537, -0.69011307, -0.70767057]),\n",
       " 'split4_test_score': array([-0.69131417, -0.69056274, -0.69647132, -0.69702483, -0.69681401,\n",
       "        -0.7000143 , -0.69903909, -0.67773652, -0.67636197, -0.68138128,\n",
       "        -0.67898933, -0.67572895, -0.67973797, -0.68490696, -0.67770882,\n",
       "        -0.68840453, -0.68912841, -0.69244466, -0.69028137, -0.67846142,\n",
       "        -0.68051389, -0.6955505 , -0.6814681 , -0.67698016, -0.68754626,\n",
       "        -0.68690876, -0.67364536, -0.67595399, -0.69537121, -0.70030146,\n",
       "        -0.67557381, -0.68850847, -0.69571756, -0.70149238, -0.70335872,\n",
       "        -0.69930498, -0.69986976, -0.71800131, -0.7047393 , -0.69110066,\n",
       "        -0.7040645 , -0.67942556, -0.70864291, -0.69252686, -0.6981613 ,\n",
       "        -0.67949817, -0.69921752, -0.68834214, -0.7020658 , -0.71400518,\n",
       "        -0.72900344, -0.67300417, -0.69431996, -0.69485204, -0.70875097,\n",
       "        -0.71123315, -0.7032052 , -0.68652362, -0.70296937, -0.67945907,\n",
       "        -0.71284073, -0.69663017, -0.69903563]),\n",
       " 'mean_test_score': array([-0.7103513 , -0.71126034, -0.7112272 , -0.71277107, -0.71376367,\n",
       "        -0.71519763, -0.71396929, -0.70401014, -0.70282878, -0.70555432,\n",
       "        -0.70456469, -0.70553505, -0.70520323, -0.70430378, -0.70926585,\n",
       "        -0.70973501, -0.7093282 , -0.71022795, -0.71085022, -0.70211448,\n",
       "        -0.70287159, -0.72942376, -0.72072216, -0.71204685, -0.71674156,\n",
       "        -0.70845671, -0.71298185, -0.7117937 , -0.73088295, -0.73016143,\n",
       "        -0.72892341, -0.72191935, -0.71852401, -0.72253569, -0.71518396,\n",
       "        -0.7405332 , -0.73516868, -0.71804984, -0.72212968, -0.7125534 ,\n",
       "        -0.71931635, -0.71331196, -0.736345  , -0.73363142, -0.72678917,\n",
       "        -0.7159315 , -0.72385759, -0.70577619, -0.71840745, -0.75657936,\n",
       "        -0.73589042, -0.71830156, -0.71749287, -0.71841538, -0.7159528 ,\n",
       "        -0.72434514, -0.74506483, -0.73664064, -0.7324244 , -0.70833349,\n",
       "        -0.7229261 , -0.70818955, -0.72575694]),\n",
       " 'std_test_score': array([0.01239229, 0.01280782, 0.01000213, 0.01010939, 0.01029023,\n",
       "        0.01065095, 0.01083759, 0.01565109, 0.01579088, 0.01365769,\n",
       "        0.01480217, 0.01579952, 0.01436852, 0.01421143, 0.0178425 ,\n",
       "        0.01808098, 0.01329656, 0.01409786, 0.01880665, 0.02011282,\n",
       "        0.02080033, 0.03273541, 0.02313205, 0.02027749, 0.01738929,\n",
       "        0.01745526, 0.02999586, 0.02393106, 0.02760159, 0.02288326,\n",
       "        0.02988576, 0.0211209 , 0.0222552 , 0.01995634, 0.02212374,\n",
       "        0.03319101, 0.0391548 , 0.01657616, 0.01775121, 0.02417144,\n",
       "        0.02299336, 0.01828723, 0.03182444, 0.02689386, 0.01642363,\n",
       "        0.02478813, 0.02341563, 0.01256844, 0.01760777, 0.03071225,\n",
       "        0.02654937, 0.03009093, 0.01493494, 0.02820482, 0.01521869,\n",
       "        0.02537873, 0.03248866, 0.02947273, 0.02296852, 0.02002956,\n",
       "        0.01132751, 0.01377106, 0.01984679]),\n",
       " 'rank_test_score': array([18, 21, 20, 25, 28, 31, 29,  4,  2,  9,  6,  8,  7,  5, 14, 16, 15,\n",
       "        17, 19,  1,  3, 52, 42, 23, 34, 13, 26, 22, 54, 53, 51, 43, 40, 45,\n",
       "        30, 61, 57, 36, 44, 24, 41, 27, 59, 56, 50, 32, 47, 10, 38, 63, 58,\n",
       "        37, 35, 39, 33, 48, 62, 60, 55, 12, 46, 11, 49]),\n",
       " 'split0_train_score': array([-0.645754  , -0.64490123, -0.64763385, -0.6482647 , -0.65002933,\n",
       "        -0.65183505, -0.65247595, -0.55931783, -0.56811137, -0.5721619 ,\n",
       "        -0.57765154, -0.58008134, -0.58630704, -0.58916485, -0.47547345,\n",
       "        -0.49369472, -0.50551533, -0.51548446, -0.52625533, -0.53862566,\n",
       "        -0.54362943, -0.3898273 , -0.42102299, -0.44410082, -0.46211292,\n",
       "        -0.48505388, -0.50170641, -0.5246485 , -0.32805918, -0.37320247,\n",
       "        -0.40801068, -0.43715096, -0.46245548, -0.48621976, -0.50724237,\n",
       "        -0.29627066, -0.34504676, -0.39268287, -0.41584628, -0.45314158,\n",
       "        -0.47636156, -0.50496456, -0.26476789, -0.32686283, -0.36750514,\n",
       "        -0.4158438 , -0.4406936 , -0.47998359, -0.49875462, -0.25190278,\n",
       "        -0.30968284, -0.37041072, -0.41451843, -0.44410514, -0.47745341,\n",
       "        -0.50260723, -0.24711414, -0.3057152 , -0.36548661, -0.41125558,\n",
       "        -0.44648904, -0.47390744, -0.5027748 ]),\n",
       " 'split1_train_score': array([-0.6442613 , -0.64450733, -0.64492742, -0.64771105, -0.64893616,\n",
       "        -0.6496849 , -0.64978023, -0.5575582 , -0.56135971, -0.56961614,\n",
       "        -0.57482172, -0.58286186, -0.58656483, -0.59309001, -0.47754544,\n",
       "        -0.48925165, -0.50285306, -0.51455317, -0.52387798, -0.53768048,\n",
       "        -0.54411895, -0.3961095 , -0.41947716, -0.43473024, -0.45829693,\n",
       "        -0.47653555, -0.49504797, -0.50980824, -0.32952047, -0.37432134,\n",
       "        -0.4104769 , -0.42957303, -0.4559276 , -0.48553306, -0.49901897,\n",
       "        -0.29089955, -0.3361641 , -0.37652178, -0.4187417 , -0.43964175,\n",
       "        -0.47848931, -0.49942302, -0.26609788, -0.32698474, -0.37084536,\n",
       "        -0.40158145, -0.44742387, -0.47560935, -0.4977588 , -0.24948911,\n",
       "        -0.31498263, -0.36655695, -0.40425212, -0.4402126 , -0.47896936,\n",
       "        -0.49506919, -0.2470961 , -0.30283143, -0.35700766, -0.40074506,\n",
       "        -0.44021736, -0.47773433, -0.49506919]),\n",
       " 'split2_train_score': array([-0.6432418 , -0.64345092, -0.64339055, -0.64538933, -0.64606662,\n",
       "        -0.64902414, -0.65100094, -0.5586369 , -0.56337559, -0.56654403,\n",
       "        -0.5727537 , -0.57673617, -0.58342136, -0.58651551, -0.47485227,\n",
       "        -0.48627553, -0.50392489, -0.51048852, -0.52318873, -0.5373145 ,\n",
       "        -0.54810546, -0.39236272, -0.42036436, -0.44410453, -0.46956349,\n",
       "        -0.48502729, -0.50188188, -0.51490281, -0.32288703, -0.3623703 ,\n",
       "        -0.39982582, -0.43069052, -0.46211929, -0.48170719, -0.50044885,\n",
       "        -0.28046388, -0.33029414, -0.37347974, -0.41653982, -0.44806267,\n",
       "        -0.47248306, -0.49747301, -0.26324902, -0.31880128, -0.37468059,\n",
       "        -0.409663  , -0.43536209, -0.47464048, -0.50363706, -0.25472342,\n",
       "        -0.30670587, -0.36268371, -0.40375274, -0.43698182, -0.47393824,\n",
       "        -0.50296881, -0.24609266, -0.30358868, -0.36538518, -0.40305849,\n",
       "        -0.43252495, -0.47074776, -0.50296881]),\n",
       " 'split3_train_score': array([-0.65684075, -0.6583494 , -0.6593819 , -0.66116702, -0.6625999 ,\n",
       "        -0.6633358 , -0.66331727, -0.57018096, -0.57362473, -0.58346403,\n",
       "        -0.58826313, -0.58967996, -0.5967327 , -0.60034393, -0.4811152 ,\n",
       "        -0.49623261, -0.51085898, -0.5257632 , -0.53187002, -0.54903641,\n",
       "        -0.56041997, -0.40479627, -0.43192988, -0.45011351, -0.47059489,\n",
       "        -0.49127979, -0.51279331, -0.53350607, -0.33418243, -0.37683618,\n",
       "        -0.40378718, -0.44319755, -0.47065221, -0.49774743, -0.51770449,\n",
       "        -0.29219067, -0.34624209, -0.38753104, -0.42387851, -0.46284812,\n",
       "        -0.48521137, -0.51533622, -0.26862678, -0.32148362, -0.38160037,\n",
       "        -0.42168818, -0.46014347, -0.47964441, -0.50466212, -0.25565215,\n",
       "        -0.31732368, -0.37207499, -0.42067489, -0.45461627, -0.48504287,\n",
       "        -0.50949417, -0.25290319, -0.31515148, -0.37328001, -0.41108258,\n",
       "        -0.46274461, -0.4876527 , -0.50970549]),\n",
       " 'split4_train_score': array([-0.65432288, -0.65436927, -0.65546843, -0.65866019, -0.66081404,\n",
       "        -0.66277879, -0.66399107, -0.56743181, -0.57386953, -0.57967804,\n",
       "        -0.58267029, -0.58978193, -0.59276643, -0.59893163, -0.4819441 ,\n",
       "        -0.49662832, -0.510593  , -0.52580403, -0.53374133, -0.54479142,\n",
       "        -0.5532081 , -0.39960976, -0.42388689, -0.44426197, -0.46701597,\n",
       "        -0.48894187, -0.49891295, -0.51955021, -0.34229153, -0.37663818,\n",
       "        -0.41010048, -0.43927088, -0.46163245, -0.49227263, -0.50795209,\n",
       "        -0.29329866, -0.33786478, -0.38968355, -0.42174759, -0.45532793,\n",
       "        -0.4799688 , -0.51417052, -0.26555038, -0.32276381, -0.37497348,\n",
       "        -0.4158385 , -0.4509975 , -0.47613845, -0.50050909, -0.25144327,\n",
       "        -0.31352329, -0.3694047 , -0.41490896, -0.45042637, -0.48181677,\n",
       "        -0.50283803, -0.25292168, -0.31448753, -0.36736427, -0.41755814,\n",
       "        -0.4444462 , -0.48105775, -0.50289036]),\n",
       " 'mean_train_score': array([-0.64888415, -0.64911563, -0.65016043, -0.65223846, -0.65368921,\n",
       "        -0.65533174, -0.65611309, -0.56262514, -0.56806819, -0.57429283,\n",
       "        -0.57923208, -0.58382825, -0.58915847, -0.59360919, -0.47818609,\n",
       "        -0.49241657, -0.50674905, -0.51841868, -0.52778668, -0.54148969,\n",
       "        -0.54989638, -0.39654111, -0.42333625, -0.44346221, -0.46551684,\n",
       "        -0.48536768, -0.50206851, -0.52048316, -0.33138813, -0.37267369,\n",
       "        -0.40644021, -0.43597659, -0.46255741, -0.48869601, -0.50647335,\n",
       "        -0.29062468, -0.33912237, -0.38397979, -0.41935078, -0.45180441,\n",
       "        -0.47850282, -0.50627347, -0.26565839, -0.32337926, -0.37392099,\n",
       "        -0.41292299, -0.44692411, -0.47720326, -0.50106434, -0.25264215,\n",
       "        -0.31244366, -0.36822621, -0.41162143, -0.44526844, -0.47944413,\n",
       "        -0.50259549, -0.24922555, -0.30835487, -0.36570475, -0.40873997,\n",
       "        -0.44528443, -0.47822   , -0.50268173]),\n",
       " 'std_train_score': array([0.00558376, 0.00606547, 0.00620982, 0.00638994, 0.00669707,\n",
       "        0.00637845, 0.00621982, 0.00515195, 0.00512946, 0.00631771,\n",
       "        0.00560892, 0.00519538, 0.00486124, 0.00536707, 0.00288394,\n",
       "        0.00404138, 0.00335691, 0.00624379, 0.0042637 , 0.00464757,\n",
       "        0.00628608, 0.00529688, 0.00454378, 0.00493857, 0.00465023,\n",
       "        0.00501894, 0.00590649, 0.00815979, 0.006535  , 0.00533287,\n",
       "        0.00407302, 0.00516376, 0.00470187, 0.00565155, 0.00664498,\n",
       "        0.00538139, 0.00590016, 0.00757312, 0.00305938, 0.00772137,\n",
       "        0.00419468, 0.00735645, 0.00176716, 0.00316433, 0.00471763,\n",
       "        0.00682815, 0.00853338, 0.00218777, 0.00268822, 0.00225022,\n",
       "        0.00379397, 0.0033009 , 0.00659376, 0.00647409, 0.00378097,\n",
       "        0.00457024, 0.00303295, 0.00536649, 0.00521397, 0.00609547,\n",
       "        0.00995481, 0.00585998, 0.00463505])}"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.702114 using {'max_depth': 3, 'min_child_weight': 6}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 给定max_depth和min_child_weight，再次调优estimator的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def modelfit_2_3(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        xgb_param['num_class'] = 9\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        global best_n_estimator\n",
    "        best_n_estimator = n_estimators\n",
    "        alg.set_params(n_estimators = best_n_estimator)\n",
    "        print('再次尝试的n_estimator是', best_n_estimator)\n",
    "        \n",
    "        print(cvresult)\n",
    "        #result = pd.DataFrame(cvresult)   #cv缺省返回结果为DataFrame\n",
    "        #result.to_csv('my_preds.csv', index_label = 'n_estimators')\n",
    "        cvresult.to_csv('my_preds4_2_3_699.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        # plot\n",
    "        print(cvresult)\n",
    "        test_means = cvresult['test-mlogloss-mean']\n",
    "        test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "        train_means = cvresult['train-mlogloss-mean']\n",
    "        train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "        x_axis = range(0, n_estimators)\n",
    "        pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "        pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "        pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "        pyplot.xlabel( 'n_estimators' )\n",
    "        pyplot.ylabel( 'Log Loss' )\n",
    "        pyplot.savefig( 'n_estimators4_2_3_699.png' )\n",
    "    \n",
    "    #Fit the algorithm on the data\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "        \n",
    "    #Print model report:\n",
    "    print (\"logloss of train :\" )\n",
    "    print( logloss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "再次尝试的n_estimator是 169\n",
      "     train-mlogloss-mean  train-mlogloss-std  test-mlogloss-mean  \\\n",
      "0               1.988367            0.010311            1.992094   \n",
      "1               1.828915            0.007528            1.841079   \n",
      "2               1.700008            0.005019            1.715469   \n",
      "3               1.593304            0.008454            1.612601   \n",
      "4               1.499533            0.009353            1.522511   \n",
      "5               1.418060            0.008147            1.445559   \n",
      "6               1.346921            0.004421            1.378733   \n",
      "7               1.285517            0.003116            1.322033   \n",
      "8               1.230673            0.001651            1.270026   \n",
      "9               1.180252            0.003720            1.225667   \n",
      "10              1.136452            0.002706            1.183595   \n",
      "11              1.093683            0.002571            1.144909   \n",
      "12              1.055303            0.005410            1.110436   \n",
      "13              1.023114            0.004355            1.079124   \n",
      "14              0.993381            0.002241            1.053911   \n",
      "15              0.965947            0.002002            1.026848   \n",
      "16              0.940682            0.002619            1.005000   \n",
      "17              0.917739            0.003540            0.984051   \n",
      "18              0.894043            0.004471            0.964783   \n",
      "19              0.874001            0.004591            0.947042   \n",
      "20              0.855393            0.003790            0.930985   \n",
      "21              0.838036            0.004146            0.915648   \n",
      "22              0.822234            0.003856            0.902711   \n",
      "23              0.806903            0.004555            0.890578   \n",
      "24              0.794758            0.004691            0.881361   \n",
      "25              0.781716            0.004684            0.870276   \n",
      "26              0.768540            0.004196            0.861031   \n",
      "27              0.757330            0.003827            0.852825   \n",
      "28              0.745663            0.004204            0.845731   \n",
      "29              0.735676            0.003704            0.838071   \n",
      "..                   ...                 ...                 ...   \n",
      "139             0.493677            0.005497            0.778706   \n",
      "140             0.492446            0.005486            0.778874   \n",
      "141             0.491538            0.005793            0.778718   \n",
      "142             0.490355            0.005461            0.778658   \n",
      "143             0.489347            0.005826            0.778011   \n",
      "144             0.488352            0.005647            0.776264   \n",
      "145             0.486896            0.006101            0.776180   \n",
      "146             0.486203            0.006342            0.775580   \n",
      "147             0.485404            0.006373            0.775705   \n",
      "148             0.484578            0.006032            0.775588   \n",
      "149             0.482924            0.005892            0.775749   \n",
      "150             0.481555            0.005820            0.775706   \n",
      "151             0.480322            0.005942            0.775139   \n",
      "152             0.479411            0.006011            0.774912   \n",
      "153             0.478265            0.005675            0.775758   \n",
      "154             0.477340            0.005916            0.775343   \n",
      "155             0.476011            0.005690            0.775195   \n",
      "156             0.475316            0.005500            0.774080   \n",
      "157             0.474445            0.005920            0.774230   \n",
      "158             0.473459            0.006200            0.774104   \n",
      "159             0.472162            0.006206            0.775120   \n",
      "160             0.470714            0.006629            0.774061   \n",
      "161             0.469822            0.006759            0.772740   \n",
      "162             0.468577            0.006484            0.773439   \n",
      "163             0.467527            0.006391            0.773153   \n",
      "164             0.466389            0.006509            0.773451   \n",
      "165             0.465315            0.006518            0.772732   \n",
      "166             0.464201            0.006298            0.771471   \n",
      "167             0.463650            0.005901            0.771426   \n",
      "168             0.462604            0.005514            0.770735   \n",
      "\n",
      "     test-mlogloss-std  \n",
      "0             0.009388  \n",
      "1             0.008880  \n",
      "2             0.008710  \n",
      "3             0.011303  \n",
      "4             0.012894  \n",
      "5             0.012440  \n",
      "6             0.008092  \n",
      "7             0.006812  \n",
      "8             0.004578  \n",
      "9             0.004464  \n",
      "10            0.002724  \n",
      "11            0.003444  \n",
      "12            0.005250  \n",
      "13            0.004285  \n",
      "14            0.003023  \n",
      "15            0.002749  \n",
      "16            0.003077  \n",
      "17            0.003673  \n",
      "18            0.005476  \n",
      "19            0.004958  \n",
      "20            0.003725  \n",
      "21            0.004223  \n",
      "22            0.003492  \n",
      "23            0.002983  \n",
      "24            0.003160  \n",
      "25            0.003713  \n",
      "26            0.005896  \n",
      "27            0.004626  \n",
      "28            0.005319  \n",
      "29            0.005390  \n",
      "..                 ...  \n",
      "139           0.008490  \n",
      "140           0.008975  \n",
      "141           0.008591  \n",
      "142           0.009385  \n",
      "143           0.008751  \n",
      "144           0.008857  \n",
      "145           0.008506  \n",
      "146           0.008121  \n",
      "147           0.009109  \n",
      "148           0.008974  \n",
      "149           0.009656  \n",
      "150           0.009428  \n",
      "151           0.009952  \n",
      "152           0.010533  \n",
      "153           0.011311  \n",
      "154           0.011985  \n",
      "155           0.012064  \n",
      "156           0.011964  \n",
      "157           0.011672  \n",
      "158           0.012458  \n",
      "159           0.013291  \n",
      "160           0.012742  \n",
      "161           0.012800  \n",
      "162           0.011796  \n",
      "163           0.011831  \n",
      "164           0.012758  \n",
      "165           0.013140  \n",
      "166           0.013913  \n",
      "167           0.013805  \n",
      "168           0.014367  \n",
      "\n",
      "[169 rows x 4 columns]\n",
      "     train-mlogloss-mean  train-mlogloss-std  test-mlogloss-mean  \\\n",
      "0               1.988367            0.010311            1.992094   \n",
      "1               1.828915            0.007528            1.841079   \n",
      "2               1.700008            0.005019            1.715469   \n",
      "3               1.593304            0.008454            1.612601   \n",
      "4               1.499533            0.009353            1.522511   \n",
      "5               1.418060            0.008147            1.445559   \n",
      "6               1.346921            0.004421            1.378733   \n",
      "7               1.285517            0.003116            1.322033   \n",
      "8               1.230673            0.001651            1.270026   \n",
      "9               1.180252            0.003720            1.225667   \n",
      "10              1.136452            0.002706            1.183595   \n",
      "11              1.093683            0.002571            1.144909   \n",
      "12              1.055303            0.005410            1.110436   \n",
      "13              1.023114            0.004355            1.079124   \n",
      "14              0.993381            0.002241            1.053911   \n",
      "15              0.965947            0.002002            1.026848   \n",
      "16              0.940682            0.002619            1.005000   \n",
      "17              0.917739            0.003540            0.984051   \n",
      "18              0.894043            0.004471            0.964783   \n",
      "19              0.874001            0.004591            0.947042   \n",
      "20              0.855393            0.003790            0.930985   \n",
      "21              0.838036            0.004146            0.915648   \n",
      "22              0.822234            0.003856            0.902711   \n",
      "23              0.806903            0.004555            0.890578   \n",
      "24              0.794758            0.004691            0.881361   \n",
      "25              0.781716            0.004684            0.870276   \n",
      "26              0.768540            0.004196            0.861031   \n",
      "27              0.757330            0.003827            0.852825   \n",
      "28              0.745663            0.004204            0.845731   \n",
      "29              0.735676            0.003704            0.838071   \n",
      "..                   ...                 ...                 ...   \n",
      "139             0.493677            0.005497            0.778706   \n",
      "140             0.492446            0.005486            0.778874   \n",
      "141             0.491538            0.005793            0.778718   \n",
      "142             0.490355            0.005461            0.778658   \n",
      "143             0.489347            0.005826            0.778011   \n",
      "144             0.488352            0.005647            0.776264   \n",
      "145             0.486896            0.006101            0.776180   \n",
      "146             0.486203            0.006342            0.775580   \n",
      "147             0.485404            0.006373            0.775705   \n",
      "148             0.484578            0.006032            0.775588   \n",
      "149             0.482924            0.005892            0.775749   \n",
      "150             0.481555            0.005820            0.775706   \n",
      "151             0.480322            0.005942            0.775139   \n",
      "152             0.479411            0.006011            0.774912   \n",
      "153             0.478265            0.005675            0.775758   \n",
      "154             0.477340            0.005916            0.775343   \n",
      "155             0.476011            0.005690            0.775195   \n",
      "156             0.475316            0.005500            0.774080   \n",
      "157             0.474445            0.005920            0.774230   \n",
      "158             0.473459            0.006200            0.774104   \n",
      "159             0.472162            0.006206            0.775120   \n",
      "160             0.470714            0.006629            0.774061   \n",
      "161             0.469822            0.006759            0.772740   \n",
      "162             0.468577            0.006484            0.773439   \n",
      "163             0.467527            0.006391            0.773153   \n",
      "164             0.466389            0.006509            0.773451   \n",
      "165             0.465315            0.006518            0.772732   \n",
      "166             0.464201            0.006298            0.771471   \n",
      "167             0.463650            0.005901            0.771426   \n",
      "168             0.462604            0.005514            0.770735   \n",
      "\n",
      "     test-mlogloss-std  \n",
      "0             0.009388  \n",
      "1             0.008880  \n",
      "2             0.008710  \n",
      "3             0.011303  \n",
      "4             0.012894  \n",
      "5             0.012440  \n",
      "6             0.008092  \n",
      "7             0.006812  \n",
      "8             0.004578  \n",
      "9             0.004464  \n",
      "10            0.002724  \n",
      "11            0.003444  \n",
      "12            0.005250  \n",
      "13            0.004285  \n",
      "14            0.003023  \n",
      "15            0.002749  \n",
      "16            0.003077  \n",
      "17            0.003673  \n",
      "18            0.005476  \n",
      "19            0.004958  \n",
      "20            0.003725  \n",
      "21            0.004223  \n",
      "22            0.003492  \n",
      "23            0.002983  \n",
      "24            0.003160  \n",
      "25            0.003713  \n",
      "26            0.005896  \n",
      "27            0.004626  \n",
      "28            0.005319  \n",
      "29            0.005390  \n",
      "..                 ...  \n",
      "139           0.008490  \n",
      "140           0.008975  \n",
      "141           0.008591  \n",
      "142           0.009385  \n",
      "143           0.008751  \n",
      "144           0.008857  \n",
      "145           0.008506  \n",
      "146           0.008121  \n",
      "147           0.009109  \n",
      "148           0.008974  \n",
      "149           0.009656  \n",
      "150           0.009428  \n",
      "151           0.009952  \n",
      "152           0.010533  \n",
      "153           0.011311  \n",
      "154           0.011985  \n",
      "155           0.012064  \n",
      "156           0.011964  \n",
      "157           0.011672  \n",
      "158           0.012458  \n",
      "159           0.013291  \n",
      "160           0.012742  \n",
      "161           0.012800  \n",
      "162           0.011796  \n",
      "163           0.011831  \n",
      "164           0.012758  \n",
      "165           0.013140  \n",
      "166           0.013913  \n",
      "167           0.013805  \n",
      "168           0.014367  \n",
      "\n",
      "[169 rows x 4 columns]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logloss of train :\n",
      "0.4398010407974943\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "global best_n_estimator\n",
    "global best_max_depth\n",
    "global best_min_child_weight\n",
    "\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=2000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=best_max_depth,\n",
    "        min_child_weight=best_min_child_weight,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        nthread = 4)\n",
    "\n",
    "modelfit_2_3(xgb2_3, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1oAAANGCAYAAADktv9+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd8XFed///XR6NmyZbcW2zHqZDeCCkEwsJSNhCWuoTyhUBYdskuS5b2I+wuG0qAZdkk8AU2XwgQel9CCSUhEEoqKYSEDSlO4hp3W7K6NDq/P+6VPJYlS3auLct6PR+P+xjNnXPvnDszku57zrnnREoJSZIkSVJxqsa7ApIkSZJ0oDFoSZIkSVLBDFqSJEmSVDCDliRJkiQVzKAlSZIkSQUzaEmSJElSwQxakiRJklQwg5YkSZIkFcygJUmSJEkFM2hJmjQi4gsR0R0Rxw3z2HsiIkXEuUPWN+WP3RYRWyOiNyLWRcTPIuLVEVFXUXZpvo/KpTUi7omIiyKitC+Oc1ci4sKIOH+86/FERERDRFwSEc8c5rHz89d96TjUa2FerxP39XOPp4i4OiLaxrseAPnrnyJi9njXRZIMWpImk4uAtcCXIqJmYGUevN4PXJ1S+lHF+iOAu4F/AX4HvA54FvBWYDXwBeBfh3me/wuckS9/A9wEXA58rPhD2m0XAuePdyWeoAbg34FnDvPYtWSv++P7skK5hWT1mlRBS5I0vOrxroAk7SsppdaIuAC4jiwg/XseuL4CrCMLYgBERDVwDTATeGpK6f4hu/t2RHwAOGmYp1qRUrq14v7PIuJY4FXAOwo7IO0kpbQB2DDe9ShSRDSklDrGux6SpN1ji5akSSWl9AvgSuC9EXEKcAlwAnBBSqmlouhLgKOBS4cJWQP7Wp5SumaMT90C9FauiIiqiHh3RPw579K4PiK+HBGLhm4cEW/MuyB2RcTmiPh+RBw1pMyhEfHNiFiT729dRNww0JUtIh4DjgHOruja+NiuKp2X+VRE/J+IuD8iOvJ6vHCMx125r9qI+NeK490QEV+MiDlDyj0rIm6MiE0R0RkRKyLie3mXwaVsD1L/XnEcV+fb7tR1MN/XfRFxRkTcnO/zsYh4Q/74CyLirvzY7o2I5w+pz+F5PR/Ky6yOiB9VdkHNuzH+Pr/7xYp6XVJR5kURcUu+j20RcX1EnDHkuQa6vp0cEd+NiC3AsvyxXb6/I7zmF+X7O3yYx/4jInoGutlFxEkR8eP8c9idP8+1w30e90REnJXXd1v+GtwcES8Yodwt+Wd9dUR8MCLeNPR9fYJ1OTYifhARW/Ln+UNEvH5Imar88/pA/pnZGhF/jIi3VZSZExGfjYiVFZ/pmyLiL4uop6SJzRYtSZPRu4DnAd8FFgNXppSuH1LmOfntD/dg/1WRtYgBNAN/DTwf+I8h5f4beDPwKeDHwFLgg8AzI+LklNJGgIi4GPgw8A3gYmAWWUC8JSJOTSk9lO/vJ0AJeDewApgNnAlMzx9/SX7MLWRdCAG6x3A8LwBOBd4HtOX7/35EPCml9MgYticiqoAfAE8n60J5M3AwWZfNGyPiKSmlzvxE+lrgt8Abga3AQWSvXy1Zl8DnAz8DPg9clT/FaK1Y84Ev5s+9iqz75xciYjHwcrLXtyU/xmsi4tCU0pp824XAJuA9+fPMBF4P3BYRJ6WUHgDuAt6QP8eH8mMgfy4i4tXA18haU18F1OWv440R8eyU0u+G1Pd/gG+SfSnQmK8b7f0dzlfJPnfnU9HNNbLrBV8L/CiltDEiGoHrgUeBfyBr4Z0P/AUwbRf7H5OIODvf/x+BC8g+dxcCP4qIV6WUvpWXOz4v9yDZa9wB/H1e10JExJPIPn/rgX8ie29fC1wdEfNSSgNdfN9N9nv2IeA3QA3wZHZ8vb8CnEzWvfjB/LGTyX5HJU12KSUXFxeXSbeQnewmshP3qcM8/tP88boh64PsS6qBpVTx2NJ8m+GWLw4p++R8/aeH7P+p+fpL8/vTyU42rx1SbjHQBXwtvz8r3+5toxz3fcCNu/E6JbLr2qZVrJsHlIH37MZ+zsv39dIh65+Sr39Lfv9l+f0TdrGv2XmZS4Z57Pz8saUV627M151SsW4m0Je/tgsr1p+Ql33rLp6/RHbS/SBw2TDHcv6Q8lVk1/T9EaiqWD+VLNDcVLHuknwf7x+yjzG9vyPU93vAyiHP/Vf5/l6Y3z8lv//Xe7D/q4G2Ucrckh/r1Ip1JeDevG6Rr/s2WZifPeT1+9PQ93WE5xl4/Wbvosw38t+dxUPW/wRoB5rz+z8C7h7l+bYBl+/ua+bi4jI5FrsOSpp08taVtwL9wFyyk+uxehtZF8CB5Z5hynyCrAXoVLIWgfeSDYrxjYoyf5HfXl25YUrpduB+4Nn5qjOAKcOUWwn8sqLcZrIuZu+KiLfn3cCK+hv/q5TStornXkfWGnDwbuzjhWStUz+KiOqBBfgDWZB7Zl7uD0AP8NmIeH1EHFrEAQCPp5TuHLiTUtpMdgx/SNtbriB77aHi2PK6vjci/jciesgCWg9wBLBD980RPImsVewrKaX+ijq0kYWg0yOiYcg23xty/4m8v18EFgGV3dneQPa6/zS//zCwBfiPiPj7iDh6jPseVd5adhrw3fyYAUgplclahBaRvUYAZwO/THlrbl6unyyAFeVZwA3571Clq8kGWhnoznk7cEJEfCYinhcRTcPs63bg/LyL4elRMciOJBm0JE1G7yQ7mXo18BBZF7IpQ8qsyG+Hhomvsz1E3TXC/lellO7IlxtTSh8h6xL4ioh4Xl5moGvRcKPjral4fEzlUkqJLHT9nKzL013Ahoj4ZEQ80a5fm4ZZ100WAMdqHlnrXA87BtVesi5qswFSSsvIAsF64NPAsohYVnldzB7aPMy6nqHrU0o9+Y/1FasvI3v/rgHOJQsNp5KF7LG8BqO9h1XAjCHrdyj7BN/fn+b7G7gmbQbwIuDLedghZdcnnk0WdD8M/Cm/Ruv9BYSHGWQtwSMdP+z4eV83TLnh1u2pWWOsy0fI/lacTvYabsqvMXtKxTavBL4EvIms1W5zZNdZzi+wvpImKIOWpEkl/6b+A2Qnmd8i62p2OHDpkKID12y9qHJlSmn9QIgi6zY0Vn/MbwdazwbCy4Jhyi4ENu5mOVI2OMcFKaX5ZC0El5NdB/Ofu1HPvWUj2bGcOsIycM0YKaXfppTOJbu+7XSyE9grIuK8fV3p3GvJPi/vTSn9PKV0e/7+j3WuptHew36y1qRKaWjBPX1/K1qOXhwR08m+YKgja+mqLHdvSuk8sqBxIvAtsmvWnuhImVvIjnGk44cdP+/zhilXZHDZNJa6pJT6UkqXpZROJutq+iqyLrs/H2iBTCltTCldlFJaSvalzMXASxnSAi1pcjJoSZo08q5qXyI7kXobQMqGYb8MeFtEPK2i+PeB/yUbnfDJBTz9wMhw6/PbX+a3O1zkHxGnknVHuyFfdQvQOUy5ReRdoIZ7spTSgymlD5FdA3NyxUO72xJVlB+TncCXKlr7KpcHhm6QUiqnlG4jG5wBth/HwAAe++o4EkMGDclHyztoSLmR6vUA2TVar46IqNhHI9k1abek3Ry+fRfv70i+SNZK9yqyLxduSSn9eYR9p5TSPSmlfybr7jmW/e+qru3AbcBLK1uO866PryUbMOTBfPWvgWdFxYTDeblXPJE6DHFD/hwLh6x/Hdk1e7cO3SCltDWl9F2yVtaZZNdjDi2zIqX0KbIvaZ7QaybpwOCog5Imk4vJBiz4q5TS1or1/0bWJewLEXFiSqkzpVSOiBeTddW6PSI+RzaowhayLnCnkbVODTf0+5KIOD3/uZGsm+LFwHKy0eRIKT0QEZ8F3hoR/WRdk5aSdVFbSdZaQUppa0R8EPhwRHyZ7DqvWWQT43aRjdo3MFrbp4DvkHWH7CELYscDH62o273AeRHxSuARoCuldO/uvIh76JvAa4CfRMQnyK5t6SW7PucvgB+klL4fEX+f1/tasu6b9WSjDwL8AiCltC0ilgN/HRE3kHX/25hSemwv1f3HZNfh/JmsZfIUspErVw0pt4wsFL8mIu4nG9RhTUppTUS8m2zUwR9HxP8ja1F6F9ln6T2jVWA33t9hpZT+HBG3kH0OF5ONdlm5/xeStY5dQ/a5CLKWmelsb93dlVJEvHyY9e0ppZ/mz3s98KuI+Hhe/wuBY4FX5V0jIWtZPhe4ISIuJXs9/57tIy/2MzbnRsROLc55WHo/2TWDv4psLrzNZJ/NFwDvzrtREhE/Ihs85g6y0SYPJptrbznwUEQ0A78i6078Z7IW7lPJRsX8nzHWU9KBbLxH43BxcXHZFwtZKOoBPjvC46eTjaR32ZD1TWQnibezfS6sdWTDdF8INFSUXcrOow12krVoXA7MH7LvKrLrbR7I67aBfHCAYep3Adk1Qd1krQzXAEdXPD6XrNVi4AR/W17+InYc7fBgsvDYmtfvsVFetwR8apj1jwFX7+Z7UE3WDe0P+euyLa/vlcDhFe/D/+T77yJrfbwROHfIvp5Ndp1SV17Hq/P15zP8qIP3jXAMPx7tmMnCxlX5+95ONvT8Wfl+bxyy7Xn5MfUwZGREsmH+b82PvY0sOJ45ZPtLGGbUvLG+v6O8/n+b77sDaBry2JPIAsPD+eNbyVqhXj+G/V7NyKNtPlZR7iyy1qS2/DluIR/1cMj+zspfpy6ya6k+RvZ7kshHBNxFXS7ZRV1SRbljyaZu2Er2O/UHdh4t8u3ATWS/l91kAesq4OD88TqyKRruIfvb0EEWuC6h4u+Ci4vL5F0GhlOVJEnaL0XEdWTh+cjxroskjZVdByVJ0n4jIi4D7ibrQjuTrFvfc8hadSVpwjBoSZKekHyQkV3pTxXzR0mjKJGNDDqfrMvf/wL/J6X01XGtlSTtJrsOSpL2WEQsBR4dpdj7U0qX7PXKSJK0H7FFS5L0RKwhG2lttDKSJE0qtmhJkiRJUsGcsFiSJEmSCmbXwWFERAALyeYpkSRJkjS5TSObhH7M3QENWsNbCKwa70pIkiRJ2m8sAlaPtbBBa3jbAFauXElTU9N410WSJEnSOGltbWXx4sWwm73dDFq70NTUZNCSJEmStNscDEOSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkgu0XQSsiLoyIRyOiKyLujIinj1L+ooh4ICI6I2JlRFweEfVPZJ+SJEmSVJRxD1oR8UrgCuBS4CTgt8BPI2LJCOVfA3wUeD9wFHAB8ErgI3u6T0mSJEkqUqSUxrcCEbcBd6WU3lKx7n7gmpTSxcOU/xRwVErp2RXr/gt4akrp6Xuyz2GeowloaWlpccJiSZIkaRJrbW2lubkZoDml1DrW7ca1RSsiaoFTgOuGPHQdcOYIm/0OOCUinprv41DgHODaPd1nRNRFRNPAAkzbg8ORJEmSJACqx/n5ZwMlYN2Q9euA+cNtkFL6ZkTMAX4XEUF2DP+dUvronu4TuBj4992vviRJkiTtbNyv0coN7b8Yw6zLHoh4JvAvwIXAycBLgRdGxL/t6T7Jru9qrlgWjbXikiRJkjTUeLdobQTK7NzSNJedW6QGfBD4Skrpqvz+vRHRCHw2Ii7dk32mlLqB7oH7WUOZJEmSJO2ZcW3RSin1AHcCzxny0HOAm0fYrAHoH7KuTNZiFXu4T0mSJEkqzHi3aAFcBnwlIu4AbgHeDCwBrgSIiC8DqytGC/wR8PaIuBu4DTicrJXrhyml8lj2KUmSJEl707gHrZTStyJiFvA+YAFwH3BOSml5XmQJO7ZgfYjsWqsPAQcBG8jC17/sxj4lSZIkaa8Z93m09kfOoyVJkiQJJug8WpIkSZJ0IDJoSZIkSVLBDFqSJEmSVDCDliRJkiQVzKAlSZIkSQUzaEmSJElSwQxakiRJklQwg5YkSZIkFcygJUmSJEkFM2hJkiRJUsEMWpIkSZJUMIOWJEmSJBXMoCVJkiRJBTNoSZIkSVLBDFqSpEJ09PSx9D3XsvQ919LR0/eEy0mSNJEZtCRJkiSpYAYtSdrP7Y0WoInSqmQrmSRpojJoSdIBxMCxa74+knaXfze0pwxakqQRTeYTjPFsTRvP1/1AOx5JGi8GLUmS9oHxDDCGJ+1LdvmVMgYtSZK0X/DEe//m+7Nrvj4ayqAl7SH/oEqSNDFN1v/hk/W4x4tBSxPaROgO4x81jcTPhiSNjd0R9z1fyyfOoCVJY7A7/3D85yRpdxxog59o1w60/ycH2vEUyaCl/ZKtStpX/GxIE89kDSae0GokB9r7faAcj0FL+8yB8kuzN/kaFcfXUhJMnGAk6cBj0DpA+I9EE5mfIUmSdKAxaGlYnvgeGMa7m4mfI0kThX+vJBXNoLUf88RXI5ms7+NkPW5JkjTxGLQkSZIkqWAGLUmSJEkqmEFL0m6x+54kSdLoqse7ApKkA0NXb3nw58uuf5Cu3jLbuvrypXfw59au3sFyJ33geqbWVTO1vjq7ratm2sDP9dXUV5cGy177x8eZM62O5ik1g0vTlBpqSsV9Z9jdV2Zzew+b23t4fGvn4Pqrb3qMvv5Ee08fHd1lOnrKdPT00dFTZlvF8fzdV+5kzrQ6ZjXWMrMxu53RWMvMxloaav1uU5ImE4OWnpCUEis3dwzev+H+9fkJRYmG2ur8tkRjXTUppR227S3309FTprOnTHtPX3bb3UdHb5kt7T2D5X54zxqm1JQoVQVVMbBAqSroLfcPltvW1UtDrR9paV9btqGNr9+2gu/cuXJw3VW/fXRM23b39dPd18Omit/5kbzru38cdn1jbYlpU2oG75//hdupr62mthTUVldRW6qiplRFbXUVVbF9u/d+/15aO/sGg9Xm9h7auodvpf3Yzx8Y0/H89qGNYyr33Mt/w8LmKSyYXs/85noWNNUzv3kKC5rrWdBcz5Ta0ug7kSTt1zwr1W5Z19rFPSu3cu/qFu5Z1cK9q7aypWP7t7lv/cbdI25beYJzwvuvo7ecRixb6T3fu3dM5U778C+Z2VjLkpkNLJ3VwJJZjSyd1cDBsxqZO612TPtIKdHTtz28dfaUqYrtFY+AIIiAvoqQJ002PX39XP+/6/jabcu5edmmnR5/7elLmNlQy7T6GqbVV1fcVlNTCl74f28C4Pq3P4Nyf6Ktq49t3X20dfXR3t1HW3fW+rW1o4cv3bIcgNMOmcm2rj5aOntp7exlWx6K2nvKtPdsb027/bEtYzqGa+5eM+z6UlUwo6GWGQ01PLS+DYAXHL+ApvpqGmqraawtMaW2msa6ElNqSlSXgn/+1j0AfPDFx9DWVWZzezeb2nvYkge4TfnSmddz1ZZOVm3pHPb5Aaor/mD+7ZfuYNbUOmY01DC9oZbpDTXMyG8rA9nQL7MkSePLoDUBpZTYsK2bhze0sWxDO8vWt/HQum2Dj7/zO/dw+NxpHDankUNmZ8u0+ppd7HFH/f1phxalK3+9jPsf38YfV21lXWv3TuVrSjEYmk5Y1ExXb//2FqqePrp6s0DSX3EOUBmyqquCKbUlGgdawOpK1FWXuHN5drJ0xqGziIByfyIlKKdEf0r09yf6+hN/WtM6uK+Bb6X/sHLriMf3/Ct+S7k/0Vvupy+/7S3301fO9lfplA/9Ykyv2Ys+dRNLZjawaMaUfGkYvK2rjtF3UJD+/sS2rj62dPSwuaOHdS1dg499/bYVNNRWU10KakpBdVXV4G11KSj3e5I2Edz88EY6e/tp6ezdvnRkt1s7e3b44uO5l/+G2lL2/pby97tUFdRUVVHx/QGXX/8gR8ybxiGzG1k6q5HZU2uJGP5zu2pLB9+8fSXf/P1KNrZlfw+qAp715Lm87JRFvOWrdwHw3nOOGrGFufLavoOmT9llS3RHT99g0PriG07doWxfuX8weK3b1sUr/9+tAHz8FccTBD3lfnr6st/v7vy2vbuPz+WtbW979hHMb65nZmNt3tUvW5rqa6iqCjp6+jj6fT8H4D9ffvwox5MFrZedvGiX5Qb299ULnsqWjl7WtnSxpqWTtS1dPN7SxdqWLtZv69rhb9FNwwTZ4Zz0wV8wu7GWWVPrmDW1ltkDt411TKvfXqe7V2whCLr6ynT39tPVV6art5/u3jJdff20VXSFvPLGZUytr6auukRddRV1NVWDP1f+xfjTmhYaaqspVQWlCKqqguq8F0KpKujpKyNJk41Ba4L43G8eYcXmTh7e0MYj69sGv8kdzk/uXQus3WHdnGl1HDK7kYNnNgyu+3+/foTWrl42tfWwqb2bTW09bGzrYUtHzw4n3Z+84eHBn6sCjpg7jeMXNXP84umcsKiZJTMbOPED1wPwjTefvtNJRrk/0dlbZlNbN2f/540A3PCOZzCrsY6G2mpqq3e+bqHyhOTz5z9lTCcuv/+XZ7NhWw/LN7WzfHMHyze189jGDlZs7mBNSycDX/auqOjqWJSH17fxcP7N91BTarZ/43zJD//EkpkNLMi7DC1snsL85nrqa0buJpRSYlt3H2vzk7C1rV07dNd87VW30drVx5b2HrZ29o4YmD507f1jPp73fv9eXnfGUk5aPH3EE26Nze60MqSUWNvaNfh5WrYhu32o4rP1pi/fOeb97arFpNLnhnTzm1ZXzdLZjSyd3cii6fWD69/y1bv4zUMbBn+X5kyr47xTF3PeU5dw0PQp+3xwlOpSFTPya6DmNtUNrj/nuAW7/JsxcLx/d/ah49bd+OSDZ4z43H3lflZs7uBZ//VrAC59ybF09pTZ0pEF6ZaO3sGft7T3sLY1+0Klp6+fNS1drKn4gmU4r7nq9jHX85O/fHj0QsArrrx1zPs85xO/ZcmsRhbPmMLimQ0sntHA4plTWDyjgdp9+MWUJO1tBq0J4vJfPLTD/aqAxTMbOGzOVA6fO5XFM6bwbz/4EwDveO6RrN7SySMb2nlkYzsb27rZsC1bbn908+A+PnHDjvscyTnHzefkJTM4ftF0jlnYRGPdjh+b0U6uSlXB1LrqHboOLmje9bfYe6Kxrpo50+o5emHTTo9tae/mpA9mrVNfe9NTmVpXQ3Up8m/7q6iuCmpKVXnrXD+nf+SXQBbeGmqrSWQnwdktkKC9p5czP/orAK563SlsaOth1ZaOwS5Bq7Z0sK61m86KAQK+fceqYes+q7GWBdPrmTtt+0ntG774ezZs62ZtaxcdPSN/G3zXip1b7xprS4NdjAZa/J57zDxSyk7iBlry+sqJ3v5EX/6N/0BYvObuNVxz9xqOWtDEa05bwotPOoipdcW9X1292Unj5vYetnb0srZleyD4/aObOWzuVOY31VNd4CAHe0NXb5nHNrXz6IZ2Hh243Zj93g04/v3X01hbYmpdNY35MjDoQ33N9uP7mytv4dGN7Tt0gRvOkfOmZu9txYAQ0xu2DwwxpabEm7+ShbGvv+k0qktVg+95X38/veVEuT/R3t03eM3TeacuZtWWTh7d2M6alk62dfdx7+oW7l3dssNz//rBDQCcdfhsXnPaEv7y6HmFDkShTHWpivnN2/8WvOSkg8b0ZdP1//wM2nuyL7U2tfWwIb/d1N7N+tZubnkkaxlbPGMK9TWlfMlaqOprqqiryVqqqqti8G/VK05ZRLk/5dfSlbPb3n66y/109fTxwLrsb8b8pvqsp0HKPl99/Vmvg3JK9PdnPREGvgR6bFMHj20a/guvxrrtXzrdsmwTz3zSXEpVhi9JE5NBa4J44fELeNK8aRw2dyqHzZnKwbMadmgF6ejpGwxaF5x1yA7/lFu7enlsYzuPbGjngXXb+O8blwHZP+95TfXMnlrLrKm1zGrc3t2krrpqsJXq4684YcIPMlFX8VqdtGTkb5Jhx+DYWFc9Ytmaim9ezzx89rDlunrLPLKxjXM+8TsA3nL2oWxo6+Hxlk4e35p1Gerq7R+8fgO2d4O8rSIUAzRPqWF+Uz3zmuuZM7WW7921GoDL/uYE5jfXM6Mh6/Y0vaGGunyktsqTsCteeeKoxz1Q9sUnLuSn963l/sdb+ddr7uMjP7mfF514EK85bQmHzmkccR8D+3lkQzvLNrTx58e3H89LP3MzrZ29bO7oGexOOpzXf/H3QBbQ5zfVc9BAd8zpU5hT0Wpx88Mbae/ZPkLcpvYeNrdlXSY3t/ewqW17N9eB4xrN6R++YfsgLnUlGmqqmZIP6FLZ8nrB1XewYnMHq7eO3mJU7k+0dvXR2rXrLyTuywNxqSo4eFYDh+dfohw2ZyqLZk4Z7BZ3zT88bcyf3xOXTN/lCfpA0HrfuUcPluvqLbNicwePbmznsY3tPLy+je/cmZ10n3/mUl53xsEcOmfqqMetfe+gGSN/gVX5+/3zf37GqJ+hgaD1/r8+Zkz7/OU7zx7z35cvnP8UNmzrZuXmTlZu6WDl5g5Wbulkw7Zu2ru3f9FwwZfuYM60Ol5w3AJedOJCW9glTTgT++x5EvnYLq4PGE1TfQ3HL5rO8Yum09HTNxi0Ln3JsWO6hkJ7rr6mxNJZ24PJW599xA6veUqJrR29PN7SxeMtnSzf1M4Hfpx18fvoy47j4JmNzG+uZ37TjqOQdfT0DQat5x87v/Ag/OGXHsclLzqG7921mq/ftpxlG9r5xu0r+MbtKzjuoObBcrc9solVW7tYlndzW7a+bcRuS39eu22H+9VVwfSGWmY21tBUX8Md+TV5S2Y2sLali55yP6u3drJ6aye3DzOA3e50oRursQQiYLBlAGBafTWHzpnKIbMaOGT2VA6Z08jC5npefuUtAPzqnWdT7of27u2DPLT39NHWXWZLezeXXZ+1LH/ivBM5ZmETS2Y27tSddl/+PtbXlDhy3jSOnDdt8LkHgta7n/+kCf+li8bf6YfOGvGLqYfWb+PcfKCUpinVbNjWzdU3P8bVNz/GkpkNnHvCAl50wkEsnjllX1dbknab/zGlcRQRg9eYHL2wiY6evsGg9aITFo7rSe30hlouOOsQ3vi0pdz26Ga+dtsKfnbf4zt0J3vD1XcMu+2sxtrBlteBk/QrX3syC5qnZKO5NdYwta568Nvpym+7f3bR06mvLrGhrXuHrpirt3ayYlM7v3s4CzlPp/xoAAAgAElEQVRHzJ062BI7MIjBrKn5gAYNtTTUlXjxp28G4Hf/31/scK1cpc7eMmf9R9YF9Np/Oov+/qw+Hb3lwSkHOnvLtHT08l/XPwjAh158LE+enw0eMbNx54EjKoPRvKb6XX6hMRC0nnP0PEOMJrX6mhKHVbSW/uZdf8Gdy7fww3vWcP3/rmPF5g4+/atlfPpXyzhi7vZyq7Z0DHYHr66qopQPxDFw39EYJY0X/6tL2qWI4PRDZ3H6obPY2HY037htxWDgWDKzgSPmTs27tDZy2Jysq9uMxmw4/crWkGccOWfMQaKqKpjXVM+8pnpOOXj7+spA9oN/HHsXumxut9Fbbw+Z3bjLcgPH/dKTR75mRlIxaqurePZR83j2UfPo6OnjhvvX88N71vDrBzbsMEDMcy//7Zj3+dqrbmPJzAYWTp/CQTOmsHB61i35oBnj10LW358Gh/0H2NrRQ29fIqoYnDdyYA7J8Z5WxNAq7R7PFCSN2eypdVzw9EMGA8fPLnq6gUPSXtdQW825Jyzk3BMW0tLZyw/vWc2/XZNdlzyltkS5nA32MtosFXet2DrsAEKQXQc74FWfvZVyPq9ibzm77SlvnypgwAnvvy6bELs6nxQ7H1SpJp8ku3Igj5d85mZ6+/q3DyzSm/3cMyQ8DQyyNJpnffzXLJxez4LpU1jYnE14vbB5+/2GJzDp9cAIqA+uy6aPeWDtNh4cMpXMUz70i7wXQR2zB6ZHmJpNlVA5eNK9q1tonlJDbSkbcCW7zV4rg5sOdJ4h6QlrqK3msY++YLyrIUmaBJqn1PCykxcNBq07//UvB7/wGZhfsZyPstlXTmzr7uUZH7sRgP96xfFsaOthzdZOVuddkldv7Rycj23APatadnre4fSWE73lMowyWijAA0OuU32i1rZm030wQnCsLm0Pea/7/O1MyyfcbsgH+Gmoq6ahpkRNRbn3/eA+HtnQzkPr29g2yvWqHT1lOjZ3snLzrgcFGhjIZzT/8PW7OHXpzHyU4+Zx/xKvr9zPsg3t/HHVVu6umJvzK7cu59SlMzl6QdMup2aRwKAlSZIOEFVVQe1gK1J2ElxXMY3CX40wx1prVy+PbGgbvK7zU68+ial11dSWqqjNW6tqSlXUVmeTuz/viqy74g3veAbVVVX0lvvp6cumzegtD7R+Jdq6evmHr98NwOdedwpN9TXU15QGJ34eGF6/3N/PqZfeAMB9lzyX+poS/YnBIfMHfm7v7uOMfPqRb/ztaWzp6GXN1s7Bya7X5CPart/WRV95e2vRwGBDo/nunasHfy5VBYfMbuTIeVM5Ym42QM6SWVMGByv5ydvOorOnnE8hMDDaaw+b27PpZAYm2p7fXJ9NIZJPC9DTN3z3x1/9eQO/+vOGwec+asE0Tlo8g5MPns7JS2Ywe2rtmI5hT5T7Ew+v38YfV2XTWty7qoU/rWndYXqWAR/5yZ+BbECnoxY0ccLiZk5YNJ0TF0/fYVoGCQxa2ods+ZIk7Y+a6msGR9oEeNaT547pus7R5oSsLPu0EaYBGVquqipGnEOwuqIr4gmLR56+obfcz/JN7fzlZb8BsmlA+voTHd3ZQD8d3eWsRaqnj21dvVx771oA/v7sQzl6YTNHzpvKIbMbB6cKGa6eS2ft+prWwaH/33H2TqPt9uRdMLd29Ay2Nr77eU/ivjUt3LV8K2tbu7hvdSv3rW7lK7cuB7JrbQe85at30defhbeecuVtma6KIPe0j/6SuuoSNdWRd+vMgnPtkG6dp334hmHnq2ysLXHMQc0ctWAaX7o5q8czj5zDvatb2NTeMzjf4FdZkZWvmAfu1kc2ceZhs231muQMWgeIAy3EHGjHM158HSVp8qkpVbFw+vYBPnY1DUhHT99g0PqnIVOQ7A0RQV11ibrq0g7B8fynLR187jVbO7lrxRbuXrGVu1Zs4U+rW9nc3jNYdmDy9NFs6egFekct19FTpr6mimMXNnPcomaOO6iZ4xc1c8jsqZSqgo6evsGg9ZnXnsyUmhKrt3Zyz8oW7lm1lT+s3Mq9q1p2mAfujVffQV11FU9ZOoOnHT6bpx02m2MPat6tCbi7esss27B94Je7V2xh9tR6ptVXM7W+mqm11VSNsr/+/kR7TzZ1ybauXjZs2z7H5D0rt3LUgiamN+y91sLJzqA1yYz1xNsT9P3b3nh/fM8lSfuDhdOzESFfePxCALr7ytz52BZefdVtQDbFxrT6auqqs66XtdVVgz/3p37+Ou8C+oN/fBqliKwrZ8WAJj19/bR19/HO72STtv/gH87kmIXNI7YkDhURLJrRwKIZDbzg+AVAdk3XfWtaBrufzplWl3WhfHgTNz28CXiApvpqzjhsFqcunTm4r/buPh7b2MHyTe08tqmDFZvbB+8/3tpF5Xghr7nq9iH1gKm1WehqrBiA5MWfvon27jKtXb20dfcx0pgjr/pc9npOb6jh4FmNHDKrgaWzG1k6q5GlsxuZ11Q3ptdDIzNo7cc88R2dr5EkSQe2uuoSJy6ZPnh/V1NsVHZvPGLu1F2WGwhaR8ybNuaQNZLqUtUO3U9vfOfZPN7Sxe8e2shNyzZx6yObaO3q4+d/WsfP/7RusNzAtXkjaawrDbaULZ4xhfaeMtu6euktJ1KCbd19bOveceCSB9e17bSfmlIwrT6bw3LF5g4A5k6rY/22brZ29LK1Yyv3rBx+YBWAK3+9jGccMYfjF02ntvqJvVaTiUFLk4KBTNLuKroHgH+HpMkjIjh87jQOnzuN8592CH3lfu5d3cLNyzbxmwc3cNujmwfLzshblJbOamBJfnvwrEYOntXAlJoqjvn36wD4+T8/g4baalJKdPf1sy3vDtjW3ceGbd1c8KU7gGzgldlT62iaUsO0+mqa6muoq64iIna4fu7Gdz0TgOWbOnhsYzuPbmpn+caO7HZTO+tat3cz/OQND/PJGx6mvqaKpxw8kzMOm8Xph87kuIO2B2DtzKAlDeHJkCRJKlJ1qYqTlszgpCUzeMPTlg6GnVsvfhbzm0eeMLuyhW5ARFBfU6K+psScaXU7ldvVwCtDNdRWc9SCJo5a0LTTYxvbunjKh7IWt+ceM487HtvC5vYefvfwRn738EYAptSUOKmitfG2RzYxpbaaUlU22XZEUMon3I7IBmqZTAxa0h6arIHM68MkSSpGU8VE2fubyrB2xStPpL66xEPr27j1kU2Dy5aOXm7Oh/IHeMPVd4x5/0/76C93aMk7eGYDB+eteQ21B0b3RIOWtJftTog40AJH0cdzoL0+k9V4/k5MlM/QRKmnpMmjqip40vxpPGn+NF5/5lL6+xMPrW/j1w+u58P5/GKHzWkEICUoD8wD1799Trhyf2JjWzaC5JaOXrZ0ZKM2DjWldvuw+F295XGfwHpPTcxaS9IoxvNEdbKeJPua73uT9bgljb+B4LV45pTBoPWjt5416txyA90mv/uWM1jf2s3yTdkoi8s3dbBicwdrWjrprJjXrG4CD75h0JI0qXmiqsnAz7mk/c3RC5p4ysE7R5HuvjIPr2/jBZ/8HZBd5zVRGbQkaZx4vZv2R46iKGk81VWXOGR243hXoxAGLUkagwPtpPJAOx7t3wxvkiYjg5Yk7ec8+ZQkaeIxaEmSRmTIkyRpz0zcYTwkSZIkaT9li5YkSZpQ9sZcbLbeSiqaLVqSJEmSVDBbtCRJksZob7Sm7Y3nljT+DFqSJEnjyAAlHZjsOihJkiRJBbNFS5Ik6QBjK5k0/gxakiRJk9R4XnMmHejsOihJkiRJBTNoSZIkSVLB7DooSZKkwjhJtJQxaEmSJOmAYHjT/sSgJUmSpP2aAUoTkUFLkiRJk8pEGW3RgDmxGbQkSZKkJ8hApqEMWpIkSdIkYCDbtxzeXZIkSZIKZouWJEmStI9MlFaliVLP/ZktWpIkSZJUMIOWJEmSJBXMoCVJkiRJBfMaLUmSJEl7ZKLMSTYebNGSJEmSpIIZtCRJkiSpYJFSGu867HciogloaWlpoampabyrI0mSJGmctLa20tzcDNCcUmod63a2aEmSJElSwQxakiRJklQwg5YkSZIkFcygJUmSJEkFM2hJkiRJUsEMWpIkSZJUMIOWJEmSJBXMoCVJkiRJBdsvglZEXBgRj0ZEV0TcGRFP30XZGyMiDbNcW1Hm6mEev3XfHI0kSZKkya56vCsQEa8ErgAuBG4C/g74aUQcnVJaMcwmLwVqK+7PAu4BvjOk3M+AN1Tc7yms0pIkSZK0C+MetIC3A59PKV2V378oIp4HvAW4eGjhlNLmyvsRcR7Qwc5BqzultHYv1FeSJEmSdmlcuw5GRC1wCnDdkIeuA84c424uAL6ZUmofsv6ZEbE+Ih6MiM9FxNxd1KMuIpoGFmDaWI9BkiRJkoYa72u0ZgMlYN2Q9euA+aNtHBFPBY4Frhry0E+B1wDPAt4BnAr8MiLqRtjVxUBLxbJqjPWXJEmSpJ3sD10HAdKQ+zHMuuFcANyXUrp9h52l9K2Ku/dFxB3AcuAFwP8Ms5+PAJdV3J+GYUuSJEnSHhrvoLURKLNz69Vcdm7l2kFENADnAe8b7UlSSo9HxHLgiBEe7wa6K/Y92i4lSZIkaUTj2nUwpdQD3Ak8Z8hDzwFuHmXzvwHqgK+O9jwRMQtYDDy+B9WUJEmSpN0y3tdoQdZl700R8caIOCoiLgeWAFcCRMSXI+Ijw2x3AXBNSmlT5cqImBoRH4+IMyJiaUQ8E/gRWevZ9/fqkUiSJEkS4991kJTSt/IWp/cBC4D7gHNSSsvzIkuA/sptIuJI4CzgucPssgwcB7wOmE7WivUr4JUppW175SAkSZIkqUKkNJYxJyaXfIj3lpaWFpqamsa7OpIkSZLGSWtrK83NzQDNKaXWsW63P3QdlCRJkqQDikFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYPtF0IqICyPi0Yjoiog7I+Lpuyh7Y0SkYZZrK8pERFwSEWsiojPf5ph9czSSJEmSJrtxD1oR8UrgCuBS4CTgt8BPI2LJCJu8FFhQsRwLlIHvVJR5N/B24B+BU4G1wPURMW1vHIMkSZIkVRr3oEUWiD6fUroqpXR/SukiYCXwluEKp5Q2p5TWDizAc4AO8qAVEQFcBFyaUvqflNJ9wOuBBuDV++B4JEmSJE1y4xq0IqIWOAW4bshD1wFnjnE3FwDfTCm15/cPAeZX7jOl1A38eqR9RkRdRDQNLIAtX5IkSZL22Hi3aM0GSsC6IevXkYWlXYqIp5J1HbyqYvXAdruzz4uBlopl1WjPLUmSJEkjGe+gNSANuR/DrBvOBcB9KaXbn+A+PwI0VyyLxvDckiRJkjSs6nF+/o1kA1kMbWmay84tUjuIiAbgPOB9Qx5am9/OBx4fyz7zroXdFfserd6SJEmSNKJxbdFKKfUAd5INaFHpOcDNo2z+N0Ad8NUh6x8lC1uD+8yvBTt7DPuUJEmSpCdsvFu0AC4DvhIRdwC3AG8GlgBXAkTEl4HVKaWLh2x3AXBNSmlT5cqUUoqIK4D3RsRDwEPAe8lGJvz6Xj0SSZIkSWI/CFoppW9FxCyyLoALgPuAc1JKy/MiS4D+ym0i4kjgLOC5I+z2Y8AU4DPADOA24LkppW3FH4EkSZIk7ShSGsuYE5NLPsR7S0tLC01NTeNdHUmSJEnjpLW1lebmZoDmlFLrWLfbX0YdlCRJkqQDhkFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSrYuAetiLgwIh6NiK6IuDMinj5K+ekR8emIeDzf5v6IOKfi8UsiIg1Z1u79I5EkSZKkTPV4PnlEvBK4ArgQuAn4O+CnEXF0SmnFMOVrgeuB9cDLgVXAYmDbkKJ/Av6y4n65+NpLkiRJ0vDGNWgBbwc+n1K6Kr9/UUQ8D3gLcPEw5d8IzATOTCn15uuWD1OuL6U05lasiKgD6ipWTRvrtpIkSZI01Lh1Hcxbp04Brhvy0HXAmSNs9iLgFuDTEbEuIu6LiPdGRGlIuSMiYk3eJfGbEXHoKNW5GGipWFbt1sFIkiRJUoXxvEZrNlAC1g1Zvw6YP8I2h5J1GSwB5wAfAt4B/EtFmduA1wHPA/4239fNETFrF3X5CNBcsSzanQORJEmSpErj3XUQIA25H8OsG1BFdn3Wm1NKZeDOiFgIvAv4AEBK6acV5e+NiFuAZcDrgcuGrUBK3UD3YAUi9uAwJEmSJCkznkFrI9kgFUNbr+aycyvXgMeB3jxkDbgfmB8RtSmlnqEbpJTaI+Je4IgC6ixJkiRJoxq3roN5KLoTeM6Qh54D3DzCZjcBh0dEZb2PBB4fLmTB4EAXR5GFNEmSJEna68Z7Hq3LgDdFxBsj4qiIuBxYAlwJEBFfjoiPVJT/b2AW8ImIODIiXgC8F/j0QIGI+HhEnB0Rh0TEacB3gSbgS/vomCRJkiRNcuN6jVZK6Vv5IBXvAxYA9wHnpJQGhmxfAvRXlF8ZEc8FLgf+CKwGPgH8R8VuFwHfIBtsYwNwK3B6xT4lSZIkaa+KlEYad2LyiogmoKWlpYWmpqbxro4kSZKkcdLa2kpzczNAc0qpdazbjXfXQUmSJEk64Bi0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSqYQUuSJEmSCmbQkiRJkqSCGbQkSZIkqWAGLUmSJEkqmEFLkiRJkgpm0JIkSZKkghm0JEmSJKlgBi1JkiRJKphBS5IkSZIKZtCSJEmSpIIZtCRJkiSpYAYtSZIkSSrYEw5aEdEUES+OiKOKqJAkSZIkTXS7HbQi4tsR8Y/5z1OAO4BvA3+MiJcVXD9JkiRJmnD2pEXrGcBv859fAgQwHfgn4F8LqpckSZIkTVh7ErSagc35z88HvpdS6gCuBY4oqmKSJEmSNFHtSdBaCZwREY1kQeu6fP0MoKuoikmSJEnSRFW9B9tcAXwNaAOWAzfm658B3FtMtSRJkiRp4trtoJVS+kxE3A4sBq5PKfXnDz2C12hJkiRJ0h61aJFSuoNstEEiogQcB9ycUtpSYN0kSZIkaULak+Hdr4iIC/KfS8CvgbuAlRHxzGKrJ0mSJEkTz54MhvFy4J7853OBQ4Ank127dWlB9ZIkSZKkCWtPgtZsYG3+8znAd1JKDwKfJ+tCKEmSJEmT2p4ErXXA0Xm3wecDv8jXNwDloiomSZIkSRPVngyG8UXg28DjQAKuz9efBvy5oHpJkiRJ0oS1J8O7XxIR95EN7/6dlFJ3/lAZ+GiRlZMkSZKkiWhPh3f/7jDrvvTEqyNJkiRJE9+eXKNFRJwdET+KiIcj4qGI+GFEPL3oykmSJEnSRLQn82i9lmwAjA7gk8CngE7+f/buPEyuqsD///t0Z4WkO4Ts+74QAiFhDfsSUNRxGRV3GRUXcIVRB51RnEWcERH166iM/kZBVHQEUWSTTSBAgIQtkI3s+0KSzkL2nN8fp9qqNJ2k07nVVdX9fj3PearuvefenMqluvPhnHsOPBBCeF+2zZMkSZKkyhNijId2QgizgBtjjN9tsP9K4LIY49gM21cSIYQaoK6uro6amppSN0eSJElSiWzatIna2lqA2hjjpqae15yhg8OAPzWy/4+kxYslSZIkqU1rTtBaCpzfyP7zc8ckSZIkqU1rzqyD3wG+H0KYADxOWkvrDOBS4HPZNU2SJEmSKlNz1tH6UQhhFXAV8O7c7lnAJTHGO7JsnCRJkiRVouauo3U7cHvhvhBC+xDCoBjjkkxaJkmSJEkVqlnraO3HMcDCDK8nSZIkSRUpy6AlSZIkScKgJUmSJEmZM2hJkiRJUsaaPBlGCOG4g1QZfZhtkSRJkqRW4VBmHXyOtGZWaORY/f6YRaMkSZIkqZIdStAaWrRWSJIkSVIr0uSgFWNcXMyGSJIkSVJr4WQYkiRJkpQxg5YkSZIkZcygJUmSJEkZM2hJkiRJUsYMWpIkSZKUsUOZ3h2AEMKzNL5eVgS2A68AP48xPnSYbZMkSZKkitScHq17gGHAVuAh4GFgCzAceBroC9wfQnhrRm2UJEmSpIpyyD1aQA/gOzHGfyvcGUL4Z2BwjPHCEMI3gH8B7sigjZIkSZJUUZrTo/Vu4NeN7P9N7hi546Ob2yhJkiRJqmTNCVrbgcmN7J+cO1Z/3R3NbZQkSZIkVbLmDB38AfDjEMIk0jNZETgZ+BjwzVydi4BnM2mhJEmSJFWYEGNjEwge5KQQ3g98mvzwwDnAD2KMv8od7wzEGOP2/VyirIUQaoC6uro6ampqSt0cSZIkSSWyadMmamtrAWpjjJuael5zerSIMd4C3HKA49uac11JkiRJag2aFbQAckMHx5KGDr4cY3SooCRJkiTRvAWLe5FmGDwH2AgEoDaE8BDwnhjj2kxbKEmSJEkVpjmzDv4AqAHGxRi7xxiPAo7N7ft+lo2TJEmSpErUnKGDbwAuiDHOqt8RY3w5hHAFcF9mLZMkSZKkCtWcHq0qYFcj+3c183qSJEmS1Ko0Jxg9CHwvhNCvfkcIoT/wXeCBrBomSZIkSZWqOUHr00BXYFEIYX4I4RVgYW7fZ7NsnCRJkiRVokN+RivGuBSYGEKYAowhzTr4cozx/qwbJ0mSJEmVqNnraMUY/wL8pX47hDAQ+EaM8SNZNEySJEmSKlWWk1d0Bz6c4fUkSZIkqSI5S6AkSZIkZcygJUmSJEkZM2hJkiRJUsaaPBlGCOG2g1TpdphtkSRJkqRW4VBmHaxrwvGbDqMtkiRJktQqNDloxRj/oZgNkSRJkqTWwme0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMGbQkSZIkKWMGLUmSJEnKmEFLkiRJkjJm0JIkSZKkjBm0JEmSJCljZRG0QgiXhxAWhhC2hxCmhxDOPEj9biGEH4YQVubOmRVCuPhwrilJkiRJWSl50AohXALcAPwHcALwKHB3CGHQfup3AP4CDAHeCYwGLgOWN/eakiRJkpSlEGMsbQNCmAbMiDF+qmDfLOAPMcarG6n/SeCLwJgY466MrtkR6FiwqyuwrK6ujpqammZ+MkmSJEmVbtOmTdTW1hpx3XsAACAASURBVALUxhg3NfW8kvZo5XqnJgH3NTh0HzB5P6f9HfAE8MMQwuoQwswQwldCCNWHcc2rgbqCsuxQP4skSZIk1Sv10MEeQDWwusH+1UCf/ZwzjDRksBq4GPh34Crgq4dxzWuB2oIyoMmfQJIkSZIaaFfqBuQ0HL8YGtlXrwpYA3w8xrgHmB5C6EcaTvivzblmjHEHsONvFUNoesslSZIkqYFSB611wB5e39PUi9f3SNVbCezKhax6s4A+uWGDzbmmJEmSJGWmpEMHY4w7genAlAaHpgCP7+e0qcCIEEJh20cBK2OMO5t5TUmSJEnKTKmf0QK4HvhYCOEjIYSxIYTvAoOAHwOEEG4KIVxbUP9HwNHA90IIo0IIbwK+AvywqdeUJEmSpGIq9dBBYoy3hhCOBr4G9AVmAhfHGBfnqgwC9hbUXxpCuBD4LvACaf2s7wH/eQjXlCRJkqSiKfk6WuUohFAD1LmOliRJktS2VeQ6WpIkSZLUGhm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMGbQkSZIkKWMGLUmSJEnKmEFLkiRJkjJm0JIkSZKkjBm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMGbQkSZIkKWMGLUmSJEnKmEFLkiRJkjJm0JIkSZKkjBm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMGbQkSZIkKWMGLUmSJEnKmEFLkiRJkjJm0JIkSZKkjBm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMGbQkSZIkKWMGLUmSJEnKmEFLkiRJkjJm0JIkSZKkjBm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMGbQkSZIkKWMGLUmSJEnKmEFLkiRJkjJm0JIkSZKkjBm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMGbQkSZIkKWMGLUmSJEnKmEFLkiRJkjJm0JIkSZKkjBm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMGbQkSZIkKWMGLUmSJEnKmEFLkiRJkjJm0JIkSZKkjBm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMlbyoBVCuDyEsDCEsD2EMD2EcOYB6l4aQoiNlE4Fda5p5Piqlvk0kiRJkgTtSvmHhxAuAW4ALgemAp8A7g4hHBNjXLKf0zYBowt3xBi3N6jzEnBBwfaebFosSZIkSQdX0qAFXAn8LMb409z250MIFwGfAq7ezzkxxniwHqrdTagjSZIkSUVRsqGDIYQOwCTgvgaH7gMmH+DULiGExSGEZSGEO0MIJzRSZ2QIYUVuSOJvQgjDDtKWjiGEmvoCdD2kDyNJkiRJBUr5jFYPoBpY3WD/aqDPfs6ZDVwK/B3wXmA7MDWEMLKgzjTgQ8BFwGW5az0eQjj6AG25GqgrKMsO5YNIkiRJUqGST4YBxAbboZF9qWKMT8YYfxljfD7G+CjwbmAu8JmCOnfHGH8fY3wxxng/8KbcoQ8foA3XArUFZUDzPookSZIklfYZrXWkSSoa9l714vW9XI2KMe4NITwNjDxAna0hhBcPUmcHsKN+O4TQlD9ekiRJkhpVsh6tGONOYDowpcGhKcDjTblGSIloArDyAHU6AmMPVKds7dwK19SmsnNrqVsjSZIkqYlKPevg9cDNIYRngCeAjwODgB8DhBBuApbHGK/ObX8deBKYB9QAnyUFrSvqLxhCuA74E7CE1Dv2z7m6v2iZjyRJkiSprStp0Iox3pqbpOJrQF9gJnBxjHFxrsogYG/BKd2AG0nDDeuAZ4GzYoxPFdQZAPyaNNnGWlIwO7XgmpIkSZJUVCHGRuedaNNyU7zX1dXVUVNTU7qG7NwK3+yX3n9lBXQ4snRtkSRJktqgTZs2UVtbC1AbY9zU1PPKYdZBZcHnuSRJkqSyYdCSJEmSpIwZtNoae74kSZKkojNoVYpd20rdAkmSJElNZNCqFN87Dn5/Gcy9F3bvLHVrJEmSJB1AqdfRUlPt3Aov/jaVzkfB2L+D8e+EwadDVXVx/jxnPJQkSZKaxaBVKT70R5j9Z3jpdti6Bmb8IpUufWDc22HMm0rdQkmSJEk5Dh2sFANOhIv/C66aDR+6A074IHSqhS2rYNqP4BdvztddM7t07ZQkSZJkj1bFqaqGYeek8qbrYf4D8OL/wZw/5yfM+Ol50GscjP97OPbv4aghJWuuJEmS1BYZtCpZuw4w+o2pbFkL141I+6vaw5qX4IGX4IF/hQEnp+e5xr3dZ60kSZKkFmDQai06HJF//7nncz1dv4OFj8Kyp1K5559gyBnZ/9lOnCFJkiTtw6DVGnXuBhM/lMrmVWkCjRd/B8unw8JH8vVuPBcGngT9T0zPgPUcC9X+JyFJkiQdLv9V3dp17QOnfiqV9Qvg+d/AX/8zHVs3J5Vnf5m22x8B/U6A/pOgz/jStVmSJEmqcAatctbhSLimLrvrdR8Gp38uH7Te+b+weiYsewaWz4Cdm2Hx1FQKPfANOOky6DHy8P58hxhKkiSpjTBotWWjLoJj35He790L6+bC8mdS8Fo6Dda8nI5N+0kqg0+HiR+GY/4O2ncuXbslSZKkMmfQUlJVBb3GpHLCB/btfRpxAcx/MN/bdfeX4Pj3pNDV+5jStluSJEkqQwYtHdy7b4JtG+G5W2DGTVC3FKb9OJUBJ8Hx783+z3SYoSRJkiqYQau1yPp5roZq+8PZX4Izr4L5D8GMn8Ocu2HZ06nUm3M3jHoDdOxSvLZIkiRJZc6gpUNTVQ0jL0hl8+pcL9cvYMOidPz3H4XqjjDs7LSQ8qg3QE2/kjZZkiRJamkGLTVf195w5pVw8mVw7YC0r9sg2LgE5t2XCl9IU8aPvhiGnZN9GxxiKEmSpDJk0NLhC1X59596Ij3DNeeu3NDCZ2DFs6k89B/5ejNvg6FnpWAWQsu3WZIkSSoig1ZbU+xnuUKAXmNTOfMq2LIG5t6bQtf8B2D39lTvj59Or136wMCTYeApMOhU6HMctOuQfbvs+ZIkSVILMmipuLr0gokfTGXrOvj28LS/3wmw6kXYsgpm/TEVSM939Z+YjkuSJEkVyqClxhWj56twkeNL/5yGHK54Ni2OvPSp9Praq7DkiVTq/eoSGPNmGP0GOGpItm2SJEmSisCgpdJp3xkGT04FIEZ4dX4KXIunphkNARY9mso9X4Zex6SZDEe/EfpPKk67HGYoSZKkw2TQUvkIAXqMSGXc2/JB6/yvwSsPpl6uNS+n8tj1cEQPGHFeadssSZIkNcKgpfJ3yifTxBqvrYdXHoC5d8O8++G1dfDCb/P1fnI2DDgpPePVfyL0PhbadSxeu+z5kiRJ0n4YtHT4ij2TYb0jusNx70plzy5Y/DjM+hM8/T/p+KvzUnn+V2m7ugP0GZ+GGPY+tvjtkyRJknIMWqpM1e1h2Nkw4MR80Hr3TbD6ZVg+PZVt6/PvC/3+YzDifBh2LnQfVvx1vOz5kiRJanMMWmo9RlwAx7w1vY8RNizKBa0ZsOwpWPZ0OjbnrlQAagbAsHNy5ew0Hb0kSZJ0mAxaajktNcQQUi9V96GpjH/nvr1KZ385DTtcOg02LYPnfpkKpFkNB5/eMm1sjL1fkiRJrYJBS23P6Z+Dc78CO19LMxkueDiVVS/kZzWsd8u7Uk/ZiPOh93ioqipVqyVJklRBDFoqTy3R+9XhiBSgRpyftreug4WPwCv356eWXzw1lQe+AUf2guHnwvDzYfh56fxSsedLkiSprBm0pHpH9oBj3wGjLsoHrQv/HRY9Bgsfha1r4IVbU4F9ZzLcvcOwI0mSpL8xaEkHcuJHYPJnUpBaOi2t4zX/wTTMcPXMfL3v5p7tGnZOms2w97jiz2YoSZKksmXQUmVrqQk22nWEoWelMuUbsGUNzL0H/viZdHzXtjTk8JX70/aRvdIshsPOhUGnFL99kiRJKis+2S81R5decOzf57c/9gBc9E0YMQXaH5GGGb74O7jjcvjBpHy9WX+CTStbvr2SJElqUfZoqW0ods9Xr7Fp8eTTroDdO9O6XfMfggUPwYpnIe5N9W7/RHrtNggGnQYDT4FBp0LPscWZ0dBJMyRJkkrCoCVlrV0HGHJGKuf/C9QtT89wQZpAY83LsHFJKvUTa3SshYEnQ/+JpWu3JEmSMmPQkoqtc7f8+4/el3q3lj0NS6bB0idh6dOwow5e+Usq9f771LR2V+9x0PuYFNK6D4Oq6pb/DJIkSTokBi2poWIPM+zYNa3DNfy8tL1nd5rBcOm0NJX8rD+m/fW9XnP+nD+3XWfoNQZ6js7vizGbdjnMUJIkKTMGLanUqttBvwmpnPCBfNB6/+9h/fwUwla/BKtfht3b0jNfK57Nn/+/b4BTPpkm52jfuTSfQZIkSfswaEnlavBpMPKC/PbePbBhUQpeK56Fx76b9q96Ee64Au77Z5j4ITjxo3DU4JI0WZIkSYnTu0uVoqoajh4Ox7wVzvpifv+5X4XaQbBtA0z9HnzvePj1e9PCylkNK5QkSdIhsUdLaq6WWiz5YE67As68CubeC0/dmKaUn3NXKt2HZ//n+SyXJEnSQdmjJbUGVdUw5mL40B/giqfh5E9Ah67pGa96d3waZt8Fu7aXrp2SJElthEFLam16joKL/wuumgUXfTO//6Xb4DfvhetGwm2fgDn3wO4dxW3Lzq1wTW0qO7cW98+SJEkqIw4dlIqtVEMMO3aFSZfCvV9J2yd/HGb/GTYthxd+k0rHWhjzJhj3dhh4Usu3UZIkqZUyaEltxQXXwBv+My2W/NLt8PIfYPNKeP5XqXSqzdfdvd1nryRJkg6DQUtqS6qqYNApqVz0zbRIcn3o2rI6X++G8TBiCox5M4y6cN8QVgxOsCFJkloZg5ZUTlpymGFVVVqra/Bp8IZrYcHD8Mt3pGM7t6bw9fIfoKo9DD0zDTEc/SboVNMy7WuMgUySJFUIg5ZUibIOZFXVMOjU/Pald8H8B2DWnbBuTlqTa/6D8OeroN/E7P7cYjKUSZKkEjJoSXq9fhNgyOlw/tdg3bw0icbsO9PzXStm5Ov9+AwYfTGMfiMMPBWq/ZEiSZIEBi1JB9NjJJzx+VQ2r4KX/gD3fDkdW78Anvh/qXTqBiOnpNA14oLiP9eVFXu+JElSERi0JDVd1z4w8YP5oPX2G2HBQzD3Xti2Hl78XSpV7WDwZBh+QWnbK0mSVCIGLak1K/bkGmPfDMdfAnv3wNKnYO7daSHkdXNg4SOp1HvgX9OEGoNOg+r2xWuTJElSGTBoSTp8VdX5GQyn/Cu8Oh/m3pOe7Vo8NdWZ9uNUOtbA8HNh5EVpqGGXXqVte1M5xFCSJB0Cg5ak7B09HE67AiZdmg8n498F8x+C19bBy3ekAmkWw+HnlqypkiRJxWDQktQy3vI9aNc5zVo4916Ydx+sfC5tF85k+Jv3pRkMB5wEAyZB56NK12ZJkqRmMmhJSlpiseSqKhhwYirnfTXNYjjvLzDnrlQgLZy84OH8OT1G5ULXidD72OK2T5IkKSMGLUmlUz+L4bHvyA8xvOibsPKFtGbX+vmwbm4qz92y77n3fwP6T4K+x6cp6KuqW779++PzXJIktXkGLUnlZdKl+WCy9VVY/kwKXcuehmXPwM4t6dhTP8mf0/4I6D0uha6+x0Of46DboBZvuiRJUj2DlqRD0xJDDOsdeTSMuigVgO2b4FsD0/sTPwKrX4ZVL8KurfkwVq+qYAr5x25IQazHKOg+DNp3apn2S5KkNsugJalyFA4PvPDfU+jbuwfWL4CVz+fLqhdg24Z83Uf+K/8+VEG3wSl09RgJRw1uufY35BBDSZJaLYOWpMpWVZ0CU4+RMP6daV+M6bmuH56ctse/O4WxdfNgRx1sWJjKvHv3vdatH4Rxb4fRF6feNEmSpGYyaElqfUKA2gH57bfckHqLYoQta/ITbKybB2tn5Wc5nP9AKqEahpwOY/8OxrwJavqV5GP8jT1fkiRVHIOWpOJpyee5miIE6No7laFnpn2FIeasL8Hce9LQw4WPpHLXP8KAk/PPiUmSJDVBVakbIEll44zPwycfhc8+l54BG5AberjsKXjw3/L1nvppmhGxHO3cCtfUprJza6lbI0lSm2XQkqSGug+FyZ+Bj/0FrpwNF18Hg8/IH7//a3D9GPjth2He/WlCDkmSpAIOHZRUeuU2xLBQTV84+TKY8L78EMM+x6XhhS//IZWu/dLxE96fpo+XJEltnkFLkg7VR+5Jsxg+ewu88BvYvAIevS6VwWfAce8qdQsPzgk2JEkqKocOSlJz9BkPb/wWXDUH3vVzGHEBEGDxY/Cnz+XrPfvLFMpiLFVLJUlSCdijJalylOMQw3Yd09pb494Odcvg+V/DjJth4+J0/O4vwd1A7SAYdhYMPQeGnpVmPqwE9nxJktQsBi1JykrtADjri3DKJ+Ha3DpeA0+B5TOgbknq3Xr2l2l/z7EweHLp2ipJkorKoCVJWQsFo7I/eHt6XfwELHwYFvwVVr2YFkpeOytf7xdvgeHnwdCzYeDJqaes0tj7JUnS3xi0JLVO5TTMsMORMPKCVABeW58WQ37lAXj2prRv+fRUHvk2tOuceruGnQPDznYmQ0mSKpBBS5Ja2hHdYdzbYOSUfNB60/Ww5AlY8DBsXQvzH0gFoPNR+XM3LIJex0AILd3q7NjzJUlqAwxaktq2cun5Ov49cNJH0+yEa2alwLXgYVg8FbZtyNf70WSoHZgm1Bh6dnqt6VuqVkuSpP0waElSOQkBeh+TymmXw55dsOgxuPlt6XhVe6hbCs/dkgpAj1G54HUW9J9UurZLkqS/MWhJUjmrbp8mx6h35SxY9Xx6xmvhI7DiOVg3N5WnfwoUDCl84VYYeGoKYtUV+uPeYYaSpApVob95JamFlcsQww5HpMWRR+Qm1ti2ARZNhYV/TcFr7ex83Tu/kF7bdYa+x0HfCdBvAvQ7AWr6t3zbJUlqQwxaklTJOh8FY9+cCsD6hfD9Cen9wFNh9UzYuQWWTkulXvvO+fez74Lh58KRPVqu3Vmz50uSVGYMWpLUmnTplX//wdtSb9arr8DK52DFs2mo4aoXUviqd9vH0muPUWla+cGnw6DToNvAlm27JEmtiEFLklqzqiroOSqV496d9u3dkxZNvvHstN1zTBpyWP+s1/Sfp/21g2DgSflrxb0t2vSisOdLktRCDFqSlLVyeZ5rf6qqocfI/PZlD8LuHbDkyTSd/JInUs9X3ZJU6n1nDPQZnyvHpddeY6Fdx5b/DJIklTmDliQpLaI85uJUAHZsgWVPp7W8pt6Q9u3ckkLYkify51W1Sz1ifY5Lr5IkCTBoSZIa07FLmiBj4Mn5oHXZQ7nnvZ5Pz3mtfAG2b0wTbqyeue/5Pzw5ha/ex0KfY1PvV7chaSijJEltgEFLkkql3IcYNtRzNPSfmH/WK0aoW5ae91r1AqyYAXPvTcfqlqUy5678+R26QO9x+/Z87d5evs9J+TyXJOkwGLQkSc0TQpqZsNvANOSwMJi8//ep92v1i7BqJqyZ1fg089eNTuGr/6QU4vpNTIGuqro0n0mSpIwYtCRJ2Rt8Goy8IL+9Zze8Oi+FrhUz4Mn/Tvv37kpTz698Dp75WdrX/si0sHL/idBrXMu3/VDZ8yVJaoRBS5LKXaUNMWxMdbs0Q2Gvsan3qz5oXT4N1s6C5dNh+bNpra9dW9Psh4un7nuN318GQ06HQaem57+q27f855AkqYkMWpKk0uk2EHqNgXFvT9t796S1vJbPyIWvZ9LkGwBz/pwKQPsj0nDDgaek4NXbni9JUnkpi+mfQgiXhxAWhhC2hxCmhxDOPEDdS0MIsZHSqbnXlCSViarq1Ot1wvvhzdfDP9ydP3bO1TDyIujUDXa9BosehUevg1veCdcfk6/33C1pgo49u1u+/ZIk5ZS8RyuEcAlwA3A5MBX4BHB3COGYGOOS/Zy2CRhduCPGuP0wrylJKmeTP5N6gfbuTb1eS5+EJdPS6/oF+Xp3fTG9tusMfY9LE2zUT7bRpXdp2i5JanNKHrSAK4GfxRh/mtv+fAjhIuBTwNX7OSfGGFdlfE1Jqnyt4Xmug6mqSsMNe42BSZemfesXwfePT+8Hn5Gmm9+x6fWzHHaqzb+f/xAMPQs61bRUy5vOYYaSVPFKGrRCCB2AScC3Ghy6D5h8gFO7hBAWA9XAc8C/xBifbe41QwgdgY4Fu7o29TNIUkVqbYGsS8/8+/f/NvVmvfpKmuFw+Yz0uvIF2F7wmW99P4SqtJjy4NNh8GQYdBoc2aPl299cBjJJKlul7tHqQQpLqxvsXw302c85s4FLgReBGuBzwNQQwvExxnnNvObVwNcPtfGSpDJVVQU9R6Vy/HvSvj270gQb/99FabvbYNi4OE22sfL5/EyIPUan0NV/UmnaLklqFUodtOrFBtuhkX2pYoxPAk/+rWIIU4EZwGeAzzbnmsC1wPUF212BZQdttSSpclS3T71X9S5/IvVwLX48X9bOgnVzUpn+v/m6934VRl0EQ86Ejl1avu2Hy54vSWpxpQ5a64A9vL6nqRev75FqVIxxbwjhaWBkc68ZY9wB7KjfDiE05Y+WpNavtQ0xbKimH4x/ZyoAr62HJU+k0LXo0fzU8tP/N5Wq9mk6+eHnpdLnuNK1XZJU1koatGKMO0MI04EpwO0Fh6YAdzTlGiGlogmkoYSZXFOS1AytIZQd0R3GvCmVwl6gEz4EC/+ahhouejSVB74BR/ZMvVz14v4GTkiS2ppS92hBGrJ3cwjhGeAJ4OPAIODHACGEm4DlMcarc9tfJw0dnEd6RuuzpKB1RVOvKUnSIXnjt9IiyesXwPwH4ZUHYOEjsHUtvHRbvt73jod+E6DvBOh7fCrdBkEljZRwmKEkZaLkQSvGeGsI4Wjga0BfYCZwcYxxca7KIGBvwSndgBtJQwPrgGeBs2KMTx3CNSVJpVKpPV8hwNHDUzn5Mti9E5Y9BXPvgcd/kOq8tg5euT+Vep2PSoGrV8GiyntbwWLKBjJJOqCSBy2AGON/A/+9n2PnNNj+AvCFw7mmJEmHrV0HGHIG9DshH7Q+fGeaSKN+JsPVL8O2DbDg4VTqfXsEdB8OPUZCj1G5MjKVjq4wIkmtQVkELUmSGlVpvV/9J8LQgme2du+ANbNS6Fo+HWb8Iu3fszPNcLh21uuv0bUfHD0sv7348RTmKml9L0mSQUuSpKJp1zE9s9VvQprZsD5oXT4N6pbBurm5Mi+9bl0Dm1ekUu+W3IyIRxwNPcdCrzHQM1e6DWr5z9QcDjOU1AYZtCRJla/Ser66DUyBaeQF++7ftiGFrlUvwp+vzNUdBBuXwGuvwuLHUmnMo9fD8HOh/4nQvlNx2y9JOiiDliRJ5aLzUTDwZOg9Lh+0Ln8yva6bC2tmw9qCsmExkJtS/tHrUqnuCANOgiGnw+DT0/tKYc+XpFbEoCVJUrnrcGR6TqvfCfvu37IWrhuR3o99CyyZloYfFvZ8VbVPQxfr7dxqgJGkFmDQkiS1HZU2xPBgOhyRf//2n6S1vl59BRY9BounwqKp6XmvZU/n610/Nq3zNXhymjVx0KnQqbbl23447PmSVAEMWpIkNaYSQ1kI+WniT/wHiBE2LEyLLP/5qlRn725Y/kwqj38fQhX0GZ+GGQ4+Pa35JUk6bAYtSZJaqxCg+zDo0jsftK54CpbPyA0vfBzWL8iv+/Vkg+Unn/4Z9J8EvY9Jz49VInu/JJWIQUuSpLakdgD0HA0T3pu2N61Igat+qOG6Ofm6f/mX/PuaAdDn2DRRR+9xacHl1sRAJiljBi1Jkg5HJQ4xLFTTL63xNT63XteGxfC949L7kVNgzRyoWwKblqUy957XX+P+a2DoWTDwVOjSs8WaLknlzKAlSZLyjuyRf/+uX6QguW0jrHkZVr8Eq2fmXl+CXa+lek/dmArA0SPSBBuDJqfX7sNa/jMUkz1fkprIoCVJUkuo5J6vzt3SLIWDJ+f37dgM1w5I7yd+GJY9k8LYq6+k8uwv07Eje+27lteu1wwnktoEg5YkSeWmEkJZqMq/f8O1uZ6vDbD0KVjyBCx5EpZPT+t6zflzvu51o6DnmDTFfL8T0hpfvY/dd6r61sLeL6lNM2hJkqRsdD4KRl2UCsCu7bDiWVj4V3j42rQv7k09X2tehud/lfaF6jRBR59j89ey50tShTNoSZKk4mjfCQafBn2Pywetz8yAdXNTAFvxXHrduiYfvur9refr+Fzv14S03pfhS1KFMGhJklSpKmGIYUNd+8DRw2H0G9N2jLB5ZQpdy56Cx76b21/Y8/XrtC9UQY9RaXr5ent3t2z7JamJDFqSJKl0QkhTzNf0g2Fn54PW33q+nsstqPxcCmRrZ6dS74bxMPx8GHkhjLigMqeX91kuqVUyaEmS1Nq1hp4vgM2rU+ha9hQ88u20b3sdvHRbKoQ0wcbIC2HUhdD3hJI0XZLAoCVJkipF197Q9UIYcno+aH34T7DwUZh3bwphK2ak8tdvwRE9YPi5+fP37ATsLZLUMgxakiSpcvWfBEPPgvO+CptXwSv3w7z7YP5D8No6ePF34hadUgAAGzRJREFU+br/NQxqBkD3IWkh5aOGQveh6bVL75J9hCZziKFUUQxakiQprxKHGdbr2gdO+EAqe3altbzm/Bme/FE6HvdC3ZJUFj6y/+vc9Y/Qa1yaeKPnKKgdBFVV+68vSY0waEmSpNanuj0MPRP6T8wHrc8+D1tWwfqFsGEhrF+Qf//aq/lzn/vVvtdq1xl6jEjB66ih+f27d5Rvr5K9X1LJGbQkSdKhq8Sery4907DBQae+/timlXD9mPT+9M/DhkVp1sNXX4Hd22DVi6kU+vaINASx5+i05lfPMel9j5HQvnOxP42kMmfQkiRJ6lSTf3/2l/I9QHt2w8bFKXStnQNrXoIXfpuOxT3w6rxUZt+ZPz9UwVFD4OgR+X17dhX9IzSLPV9S0Ri0JElScVVi71e96nZpmvn6qeZ3bs0Hrc/MgI1L8mt7rZ0Da2bB9o25YYkL8tf53vEw5s0w7m0w9Gxo16E0n0dSizFoSZIkNUf9Wl+FU8jHCFvXpuC18gW476tp//aN8NwvU+lYC2MuhmPetu+5kloVg5YkSVJWQoAuvVLpPykftN7/fzD3Xpj1R9iyGp7/dSoda2DEBaVtc1M5zFA6JAYtSZJUHip5iOHBDJ4MI6fAG/8Tlk6Dl+9IZfNKeOm2fL3fvA9GTIHh50GvsSm4VRoDmQQYtCRJUqWp5EBWVZ1C1+DJcNG1sOxpmPl/8NSN6fiCh1MB6NInBa7h58KwcwwsUoUxaEmSJJVCVRUMOgX6HJsPWud/HRZPhUVT05pfz/8qFYDe4/Ln7nrN4CWVOYOWJElSuTjlE3DmlbBrOyx9EuY/BPMfhFUvwOqX8vW+MzYtxjz4dBhyOgw8BTp2LV27m8MhhmrlDFqSJEnlpn2nNFxw2Dkw5RuwZS3MuxfuuCId37srPeu1dBo8dj2Eauh7fApdg8+AvseVru2SAIOWJElqzSr5ea5CXXrCuLfng9annoAVM9IQw8WPpfW8VsxI5fEfAAWTaEz/Rer96nXMvgszVxJ7v1SBDFqSJEmV5qjB0PsYOOEDaXvjUlj8eApdi6bC+vn5uvdenX/fbTD0GZ+e9+o9DroPb9l2F5uBTGXEoCVJklTpPV/dBkK3S+D4S9L2q/PhBxPT++Hnw5pZsHkFbFycyuw7X3+NB/4VhpyRnvfq0qvl2i61UgYtSZKk1qZrn/z7S25OQfK19bB6ZppUY9XM9H7NLNizI9Wb9uNUAI4aCoNOhYEnp+DVc2zLf4ZisudLLcCgJUmS1FSV3PN1RHcYelYq9bbXwbcGpfcTPpCe8VozCzYsTOX5X6djHWuh/wn58zYth6NHVuaCylILMWhJkiQVQyWEsqqCfwpe/F+pzds2wrJncrMaPgnLpsOOuvxCygD/7yTofBT0Pjb3zNexaT2wnmNa/CMUnb1faiaDliRJkvI6d4ORF6QCsGd3Gma46FG475/TvlAN2zakfYsezZ9b1S71dNVbNy9NO2/Pl9ogg5YkSZL2r7od9JsAPUbmg9YX56WZDlfPzD/vteqFNBRx7az8uTeeDV375dYEOxuGng01fUvxKYrPni81YNCSJEkqpUoYYthQu04pfPWbkN8XI9Qtg+XPwO8uTfuqO6bZDp//VSqQhhcOOydNsiG1YgYtSZIkHb4Q0jTzR3TP77vyZVj1Ynq+a8HDsPJ5WDs7lfoZDiEtxHz0SOg+DLoPTbMedunVOocc2vPVZhi0JEmSVBztO8Pwc1OBNMX8okdT6Jr/UJrZEOCl2xs598hc6BqSAly9bRsNJ6oIBi1JkqRKUIlDDBs6ojsc89ZUCnt2zv1qmjJ+/cJUNi2DXVtz637N3Pca3z0mPffV+xjoNRZ6HZNKz9Et/3mkAzBoSZIkqbROu2LfXqrdO2DjkhS6NiyEtXPgmZ/lj29ekcor9+f3harU+1Vv3l/Sc2Bd+1TuEESHGVY0g5YkSZLKS7uOaZbDHrmp4nduzQetK2enELbm5VyZBatfgm3rYf2C/DV+9+H0emSvNMV8vwnpte/x0Lk7UrEZtCRJklqb1jDMcH861cCgU1KpFyNsWQMrpsOv35v29RgNr86DrWvglb+kUq/zUfn3Cx5OsyDaW6SMGbQkSZJU2UKArr3TOl31Pv4QEFJv18rncuX51AO2bUO+3m/eB1XtYcBJMPSsVAacmHrVKoVDDMuSQUuSJKmtas09XwAdjoCBJ6VSb/cOWD4D/vcNabumf5qIY8njqfz1W9CuMww6NYWugSeXpu2qeAYtSZIkHVxrCWXtOkLf4/LbVzwFW9fCwkfyZesaWPBQKoWe+xWMeTPU9G3ZNmfFnq8WZdCSJElS2xVCWq+r+1CY9OH0vNfa2fnQtehR2J4LmHf9Yyq9x8PIKTDywjTksNp/Uuv1/K9CkiRJqhdCbn2usXDKJ2D7JvhWbsHkfhNhxbOw+sVUHrseOtXC8PNh2NkHvm6lsffrsBm0JEmSlJ3WMsSwXlV1/v2ld8KubTD/QZh3X1rHa9sGeOm2VOrd8ek0PLH3sWkx5Zp+lbuWl5rNoCVJkiQ11ZE94Lh3p7J3DyyfnkLX3Hth1QupTsPg1akb9B6XytEjStNutTiDliRJklpea+j5qqpOsxIOPBnO+EJ+qN3ZX4Z189KCyuvmwfaNsHhqKoV+dmGakn7I6TDoNDiiAhdSdojhfhm0JEmSVN4qLZSd/rl84Ni1HdbNTet5rXkJVr2YFkkGWD0zlSd/CIQ01HDI6TDkDBh8emWt5aXXMWhJkiRJxdK+U3peq35K+cIeoLf+Nyx7OvV0rZubn2Rj2o/T8Z5j89fZsCg971XJz3q1sd4vg5YkSZJUCuPeBie8P73fvDo/vHDRY2mK+bWz8nV/NBk6H5VmPuw/CfpPTO+79i5N23VQBi1JkiS1DpU2xLBQ195w7DtSAdiyNs1uePvH03Z1hzTD4fwHUqlXMwD6Hp/f3vlaq+8pqhQGLUmSJKncdOkJY98Mt+e2/3EurF8IK2bA8lxZOxs2LUul3ndGQ5/xMPCU3EQdp0DtgMoacthKhhgatCRJktS2VGLPV3WHNFyw/0Q4Kbdvx2ZY+TwseQIe/Pe0L+6Blc+l8tRP0r6u/VLo6ndCSZreVhm0JEmSpErUsWuaobDfCfmg9emnYdVMWPoULJ2W1vbavAJe/kMq9W56Kww4GQZMgv4nQrdBldXrVQEMWpIkSVJrUdMfeozKP+u187U03HDpNFj8OLxyf9q/7OlU6h3ZMzfJxokpfPUc0/Jtb2UMWpIkSdL+VOIww0Idjki9XkPOgFM+mX/26S3fT2t6LX8m9YBtXQtz70mloRk3p/W9eh2TFmlWkxi0JEmSpLZm/Dth0ofT+13b86Fr2TPpdcOifN17vpxeO3RJz4gNOBkGnJRK+04t3vRKYdCSJEmS2rL2nWDgSanU27AEvjc+vR9yBqx4DnZugYWPpFKv+7D8+zl3p+2a/mkoYlVVy7S/TBm0JEmSJO3ryKPz79/3W2jXKU0nv/Sp9GzX0qfg1XmwfkG+3u8/mn9f1R669oWafvlyZM/88RiL/xlKzKAlSZIkHa5Kf5brYKqqofe4VE78h7TvtfWweCrc+oG03W8ibF4FW1bB3l1QtySVxnx3XJotsf+k3LT1k6Brn5b5LC3EoCVJkiTp0B3RHYafl9++9M4UOPfsgi2rYdMK2LQ897oCNi6GWX9KdbdvhAUPpVKva78UuvqMb9nPUSQGLUmSJKmltPaeL4Dq9lA7IJVCO7fmg9Y/3ANrXk5Tzy+fkYYlbl4Bs1fA7Dvz52yvS39nFcigJUmSJKll9T0OBp8G5J7r2rElLa68fHp6/mvWH9P+TrUla+LhMmhJkiRJ5agt9H7V69gFBk9OZefWfNCqYG17zkVJkiRJKgJ7tCRJkqRK1pZ6viqIPVqSJEmSlDGDliRJkiRlzKGDkiRJUlvgEMMWZY+WJEmSJGXMHi1JkiRJ+7L367DZoyVJkiRJGbNHS5IkSVLzHErPVxvrJTNoSZIkSSofrSSQOXRQkiRJkjJm0JIkSZKkjBm0JEmSJCljBi1JkiRJyphBS5IkSZIyZtCSJEmSpIwZtCRJkiQpYwYtSZIkScqYQUuSJEmSMmbQkiRJkqSMlUXQCiFcHkJYGELYHkKYHkI4s4nnvSeEEEMIf2iw/+e5/YXlyeK0XpIkSZL2VfKgFUK4BLgB+A/gBOBR4O4QwqCDnDcYuC5XvzH3AH0LysVZtVmSJEmSDqTkQQu4EvhZjPGnMcZZMcbPA0uBT+3vhBBCNXAL8HVgwX6q7Ygxrioo6zNvuSRJkiQ1oqRBK4TQAZgE3Nfg0H3A5AOc+jVgbYzxZweoc04IYU0IYW4I4X9CCL0O0I6OIYSa+gJ0bepnkCRJkqSGSt2j1QOoBlY32L8a6NPYCSGE04GPApcd4Lp3A+8HzgOuAk4CHgwhdNxP/auBuoKyrIntlyRJkqTXaVfqBuTEBtuhkX2EELoCvwQuizGu2+/FYry1YHNmCOEZYDHwJuC2Rk65Fri+YLsrhi1JkiRJzVTqoLUO2MPre6968fpeLoDhwBDgTyGE+n1VACGE3cDoGOP8hifFGFeGEBYDIxtrRIxxB7Cjfrvg2pIkSZJ0yEo6dDDGuBOYDkxpcGgK8Hgjp8wGxgMTCsofgYdy75c29ueEEI4GBgIrM2m4JEmSJB1AqXu0IA3Zuzk3vO8J4OPAIODHACGEm4DlMcarY4zbgZmFJ4cQNgLEGGfmtrsA1wC/JwWrIcA3Sb1ntxf/40iSJElq60oetGKMt+Z6nL5GWu9qJnBxjHFxrsogYO8hXHIPqdfrQ0A3Uth6CLgkxrg5s4ZLkiRJ0n6EGF8350Sbl5viva6uro6amppSN0eSJElSiWzatIna2lqA2hjjpqaeV+rp3SVJkiSp1TFoSZIkSVLGDFqSJEmSlDGDliRJkiRlzKAlSZIkSRkzaEmSJElSxgxakiRJkpQxg5YkSZIkZcygJUmSJEkZM2hJkiRJUsYMWpIkSZKUMYOWJEmSJGWsXakbUM42bdpU6iZIkiRJKqHmZoIQY8y4KZUvhNAfWFbqdkiSJEkqGwNijMubWtmg1YgQQgD6AZtL3RagKyn0DaA82qN9eX/Km/enfHlvypv3p3x5b8qb96e8Hc796QqsiIcQnhw62IjcX2CT02oxpcwHwOYYo2MZy4z3p7x5f8qX96a8eX/Kl/emvHl/ytth3p9Dvp9OhiFJkiRJGTNoSZIkSVLGDFrlbwfwjdyryo/3p7x5f8qX96a8eX/Kl/emvHl/yluL3h8nw5AkSZKkjNmjJUmSJEkZM2hJkiRJUsYMWpIkSZKUMYOWJEmSJGXMoFUiIYSzQgh/CiGsCCHEEMLbGhwPIYRrcse3hRAeDiGMa1DnqBDCzSGEuly5OYTQrWU/SevThHvzjhDCvSGEdbnjExq5RscQwg9ydbaGEP4YQhjQcp+i9TrQ/QkhtA8h/GcI4cXc3/uKEMJNIYR+Da7hd6dImvD9uSaEMDt3fzaEEO4PIZzSoI73pwgOdm8a1P1Jrs7nG+z33hRJE747P8/tLyxPNqjj754iaMp3J4QwNvf3XRdC2BxCeDKEMKjguPemSJrw3Wn4vakvXyyoU5SfbQat0jkSeB749H6Ofwm4Mnf8JGAV8JcQQteCOr8CJgBvyJUJwM3FanAbcrB7cyQwFfinA1zjBuDtwHuAM4AuwJ0hhOoM29lWHej+HAFMBP4t9/oOYBTwxwb1/O4Uz8G+P3Nzx8aTvhuLgPtCCD0L6nh/iuNg9waA3D9STgFWNHLYe1M8Tbk/9wB9C8rFDY77u6c4DnhvQgjDgceA2cA5wPGk30PbC6p5b4rnYN+dvg3KR4AI/L6gTnF+tsUYLSUuuZv9toLtAKwEvlywryOwEfhEbnts7rxTCuqcmts3utSfqbWUhvemwbEhueMTGuyvBXYClxTs6wfsAS4q9WdqTeVA96egzkm5eoNy2353yuv+1OTqne/9Kf29AfoDy4BxpBD8+YJj3psS3h/g58AfDnCOv3tKd29+A9zsvSl9aeLvnT8ADxRsF+1nmz1a5Wko0Ae4r35HjHEH8Fdgcm7XaUBdjHFaQZ0ngbqCOiqNSUB79r1/K4CZeG9KoZb0w3JjbtvvTpkIIXQAPk76u38+t9v7UyIhhCrS/8H9dozxpUaqeG9K75wQwpoQwtwQwv+EEHoVHPN3TwnkvjdvAubmHitYE0KY1mD4mvemTIQQepPu188KdhftZ5tBqzz1yb2ubrB/dcGxPsCaRs5dU1BHpdEH2Blj3NBgf+H9UwsIIXQCvgX8Ksa4Kbfb706JhRDeHELYQhpW8wVgSoxxXe6w96d0vgzsBr6/n+Pem9K6G3g/cB5wFam3/sEQQsfccX/3lEYv0jDAfyIN7bwQuB24LYRwdq6O96Z8fBjYDNxWsK9oP9vaHc7JKrrYYDs02NfweGN1VD68Ny0ohNCeNJyjCri8wWG/O6X1EGn8ew/gMuC3IYRTYoz1v+i8Py0shDAJ+BwwMebGzeyH96ZEYoy3FmzODCE8Aywm/d/52xo/C/D+FFt9p8UdMcbv5t4/F0KYDHySNBppf7w3Le8jwC0xxu0N9hflZ5s9WuVpVe61YYruRb6XaxXQu5Fze/L6njC1rFVAhxDCUQ32F94/FVEuZP2WNAx3SkFvFvjdKbkY49YY4ysxxidjjB8l9aJ8NHfY+1MaZ5J+Ri0JIewOIewGBgPfCSEsytXx3pSRGONKUtAamdvl757SWEf6GfZyg/2zgPpZB703ZSCEcCYwGvhpg0NF+9lm0CpPC0k3fUr9jtyzDGcDj+d2PQHUhhBOLqhzCul5lMdRKU0HdrHv/esLHIv3pugKQtZI4IIY46sNqvjdKT+BNOEPeH9K5WbgOFJPY31ZAXwbuChXx3tTRkIIRwMDSZNngb97SiLGuBN4mvQP+EKjSEEYvDfl4qPA9Bjj8w32F+1nm0MHSySE0AUYUbBraEjrMa2PMS4JIdwAfCWEMA+YB3wFeI00/SQxxlkhhHuA/wkhfCJ3jRuBO2OMc1rsg7RCTbg33Un/l6p+babRIQSAVTHGVTHGuhDCz0j/J/hVYD1wHfAicH+LfZBW6kD3h/QPw/8jTe3+ZqA6hFDfM7w+xrjT705xHeT+vAp8lTTd/krgaNKwzgHA78CfbcV0sJ9tpPtTWH8X6efaHPDeFNtBvjvrgWtI01GvJM16+01Sb8rtAP7uKZ4mfHe+DdwaQniENDT6DcBbSFO9e2+KrAn3hxBCDfAu0vON+yjqz7ZST8PYVgvpyxcbKT/PHQ+kH6orSQ+M/xU4tsE1ugO/BDblyi+BbqX+bJVemnBvLt3P8WsKrtEJ+AHpHy6vAX8CBpb6s7WGcqD78/+3d/ehfpZ1HMffn4zhajVQsSJQw1IrwsWUyDJWs4L90YOmCAlaf9Q/ImrP5NZqQQ/rgWJ/lEUegkxHoGJlw6eI1D+skU/TjgYnKNySls2t2tb69sd9nbr7tfM7W7s9v629X3Cz/a77uu7re+/inJvvruu+fvx7y/39HSt61/BnZzLjcyzduyS/B3bTJca3AGePXMPxWeCxmaP+DL3t3R2byY0PsBjYRPdy/h66mZKp0eeKz56FH5tenffT/cf4X4FfAe90bA6r8flA+3dfOsc1npXfbWkXlyRJkiQNxHe0JEmSJGlgJlqSJEmSNDATLUmSJEkamImWJEmSJA3MREuSJEmSBmaiJUmSJEkDM9GSJEmSpIGZaEmSJEnSwEy0JElHtSQzSa6cdBySpP8vJlqSpKNCksuSPL2fU2cD1y5A/yZ0knQUee6kA5AkaZKq6qlJx3Awkiyqqj2TjkOSNJ4zWpKkBZXkp0m+nuSLSbYn2Zpk7QG2XZrk2iR/SLIjyV1JzuydPzPJ3Umeaed/meSsJCuA64ClSaoda1ub/5hpauc+mOSHSf6S5NEkr0/y8hb7riT3JTm11+bUJLck2ZZkZ5L7k5zXv2fgZOCrs/33zl2Q5JEku1ssHxq555kk1ySZSvJn4FtJFiXZkOTJJH9rdT5xUAMhSXpWmWhJkibhUmAX8Drgo8CaJG8d1yBJgB8BLwZWAcuBzcCdSY5r1b4H/I5uOeBy4PPAXuBe4EpgB/CSdnxpTHerge8Cy4DHgOuBbwKfA85qdTb06i8BfgycB7wW2ATcmuSkdv78FteaXv8kWQ5sBG4AXgOsBdYluWwkno8AD7d7WgdcAbwDuAg4HbgEmBlzP5KkBebSQUnSJDxYVZ9uf388yeXASuD2MW3eTJeMnFhVu1vZh5O8C3gP3XtWJwHrq+qx2WvPNm6zQVVVWw8gvuuqamNr9wXgPmBdVW1qZV+jmyGD7qIPAA/02l+T5N10ydCGqtqeZB/wzEj/VwN3VtW69nk6yavoEqupXr27qupfiWFL4B4Hfl5VBfz2AO5JkrSAnNGSJE3CgyOfnwROnKfNcrqZoz+25Xk7k+wEXgbMLuP7CvDtJHck+Xh/ed8hxLet/fnQSNmxSV4IkOT5bSnkliRPt7jOoEv8xnklcM9I2T3AK5Ic0yv7xUidKbrZtl+3ZZhvm/eOJEkLykRLkjQJe0c+F/M/k55Dl5AtGzlOB9YDVNVa4NV0SwzfAmxpM0uHEl+NKZuNeT1wAfBJ4NwW10PAonn6Se9a/bJRu/ofqmozXYK5GlgMbEzyg3n6kiQtIJcOSpKOFJvp3s/6e1XNzFWpqqaBabqNJ74PvA+4CdgDHDNXu0N0LjBVVTcBJFkCnDJSZ3/9bwHeOFJ2DjBdVfvGdVhVO4AbgRtbkvWTJMdV1fb/7RYkSUNyRkuSdKS4g+5dqZuTvD3JKUnOSfLZtrPg4rYT34okJyd5A92mGI+29jPAkiQrk5yQ5HkDxvYEcH6SZW0XxOv572fsDPCmJC9NckIr+zKwMsnqJKcluRS4nPEbdZDkqiQXJzkjyWnAhcBWYH/fEyZJmgATLUnSEaFt+rAK+BnwHbpZqxvoZo62AfuA4+l2C5ym283vNuBTrf29wDfoZoGeotvtcChXAX+i293wVrpdBzeP1FnTYv1N6392CeBFwMV0uwp+BlhTVVPz9LcT+Bjdu1v3t+uuqqp/HPKdSJIGke65JUmSJEkaijNakiRJkjQwEy1J0mEhyXv727aPHI9MOj5Jkg6GSwclSYeFJC8AXjTH6b1V5ZfySpKOGCZakiRJkjQwlw5KkiRJ0sBMtCRJkiRpYCZakiRJkjQwEy1JkiRJGpiJliRJkiQNzERLkiRJkgZmoiVJkiRJA/snz15u9KfFLYQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1000x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds4_2_3_699.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail4_2_3_699.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第四步：调整树的参数：subsample 和 colsample_bytree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8],\n",
       " 'colsample_bytree': [0.6, 0.7, 0.8, 0.9]}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "global best_n_estimator\n",
    "global best_max_depth\n",
    "global best_min_child_weight\n",
    "global best_subsample\n",
    "global best_colsample_bytree\n",
    "\n",
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=best_n_estimator,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=best_max_depth,\n",
    "        min_child_weight=best_min_child_weight,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        nthread = 4)\n",
    "\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_\n",
    "\n",
    "best_subsample = gsearch3_1.best_params_['subsample']\n",
    "best_colsample_bytree = gsearch3_1.best_params_['colsample_bytree']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.3862    , 1.00700002, 2.25280013, 1.17059994, 1.70560007,\n",
       "        1.65819998, 1.49699998, 1.63739996, 1.53819985, 1.87899995,\n",
       "        1.73819995, 1.56619997, 2.24160018, 1.63580003, 1.58619995,\n",
       "        1.9868    , 2.03959999, 1.79819999, 1.98560009, 1.94019995,\n",
       "        2.26419992, 2.01099997, 1.75240002, 1.27880006]),\n",
       " 'std_fit_time': array([0.00466466, 0.58817926, 0.81530352, 0.36726261, 0.67546502,\n",
       "        0.92207476, 0.59177198, 0.68682242, 0.70603292, 1.02796952,\n",
       "        0.73479229, 0.56201401, 1.16174392, 0.56804771, 0.67628906,\n",
       "        0.87219059, 1.13126755, 0.67789217, 0.82275108, 1.41228245,\n",
       "        0.98963228, 0.74685019, 0.50026171, 0.31910592]),\n",
       " 'mean_score_time': array([0.00380001, 0.00660005, 0.00979991, 0.00640001, 0.01200004,\n",
       "        0.00739994, 0.00819998, 0.00679994, 0.00680013, 0.0098    ,\n",
       "        0.0098    , 0.00880008, 0.00899982, 0.00639997, 0.0092001 ,\n",
       "        0.00899997, 0.00780001, 0.01100006, 0.00820003, 0.00860009,\n",
       "        0.00820007, 0.00879993, 0.00619993, 0.00499992]),\n",
       " 'std_score_time': array([0.00039999, 0.00392921, 0.00359993, 0.00185472, 0.00340587,\n",
       "        0.00249795, 0.00396982, 0.00263826, 0.00263816, 0.00324959,\n",
       "        0.00396991, 0.00318735, 0.00178878, 0.00149666, 0.00376296,\n",
       "        0.0030331 , 0.00318746, 0.00363315, 0.00391927, 0.00300655,\n",
       "        0.0034293 , 0.0030594 , 0.00159993, 0.00178888]),\n",
       " 'param_colsample_bytree': masked_array(data=[0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.7, 0.7, 0.7, 0.7, 0.7,\n",
       "                    0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.9, 0.9, 0.9, 0.9,\n",
       "                    0.9, 0.9],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_subsample': masked_array(data=[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6, 0.7,\n",
       "                    0.8, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6,\n",
       "                    0.7, 0.8],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " 'split0_test_score': array([-0.76261484, -0.75677448, -0.75662578, -0.75930827, -0.74072668,\n",
       "        -0.74923758, -0.75676929, -0.74680297, -0.77207074, -0.7493985 ,\n",
       "        -0.75696868, -0.74753479, -0.74778119, -0.76737228, -0.7578827 ,\n",
       "        -0.75671521, -0.77304178, -0.76556816, -0.73342674, -0.73767806,\n",
       "        -0.73330537, -0.76819451, -0.76825074, -0.7671042 ]),\n",
       " 'split1_test_score': array([-0.75968466, -0.75140958, -0.7413018 , -0.74861366, -0.74638867,\n",
       "        -0.73933023, -0.73938837, -0.75901908, -0.75183131, -0.7498287 ,\n",
       "        -0.74992022, -0.7487216 , -0.75017002, -0.75207886, -0.75924018,\n",
       "        -0.7555668 , -0.7547009 , -0.76305922, -0.76785903, -0.76014477,\n",
       "        -0.76601677, -0.75279254, -0.76277143, -0.75010193]),\n",
       " 'split2_test_score': array([-0.71626682, -0.73317942, -0.75373386, -0.77536968, -0.74975779,\n",
       "        -0.75799777, -0.7236969 , -0.74241117, -0.75756358, -0.77447687,\n",
       "        -0.76873336, -0.78372557, -0.68816421, -0.74454571, -0.75002607,\n",
       "        -0.76769013, -0.76139453, -0.77252791, -0.74232866, -0.76813241,\n",
       "        -0.77178852, -0.77616801, -0.77715002, -0.77638544]),\n",
       " 'split3_test_score': array([-0.67381088, -0.7001883 , -0.68447849, -0.70319021, -0.6713644 ,\n",
       "        -0.68491786, -0.70083066, -0.7021721 , -0.67632436, -0.69173948,\n",
       "        -0.68158564, -0.68768549, -0.71013256, -0.70962313, -0.69393392,\n",
       "        -0.69117219, -0.69004053, -0.67832748, -0.68018412, -0.69446348,\n",
       "        -0.70281021, -0.7053427 , -0.70661079, -0.68907901]),\n",
       " 'split4_test_score': array([-0.69261363, -0.68444099, -0.68878486, -0.70660127, -0.68067717,\n",
       "        -0.68063923, -0.70835468, -0.68576471, -0.69471438, -0.68920826,\n",
       "        -0.68273334, -0.69811606, -0.69449326, -0.73101422, -0.71312092,\n",
       "        -0.69848202, -0.7041297 , -0.70973709, -0.71568001, -0.72212822,\n",
       "        -0.70905577, -0.6916194 , -0.70618925, -0.69636673]),\n",
       " 'mean_test_score': array([-0.72115697, -0.72532747, -0.72512495, -0.73872544, -0.71791235,\n",
       "        -0.72255745, -0.72591233, -0.72733967, -0.73067398, -0.73104821,\n",
       "        -0.72813787, -0.73326597, -0.71823918, -0.74102095, -0.73494947,\n",
       "        -0.73404905, -0.7368134 , -0.73798704, -0.7279667 , -0.73656815,\n",
       "        -0.73665007, -0.73896286, -0.74431815, -0.73595622]),\n",
       " 'std_test_score': array([0.03545513, 0.02840034, 0.03174983, 0.02881565, 0.03431074,\n",
       "        0.03290683, 0.02040029, 0.02815464, 0.03775513, 0.03422904,\n",
       "        0.03786695, 0.03546044, 0.02619915, 0.01957838, 0.02644429,\n",
       "        0.03225384, 0.03313446, 0.03721706, 0.02915387, 0.02655113,\n",
       "        0.02830358, 0.03403932, 0.03117124, 0.03622291]),\n",
       " 'rank_test_score': array([ 3,  6,  5, 21,  1,  4,  7,  8, 11, 12, 10, 13,  2, 23, 15, 14, 19,\n",
       "        20,  9, 17, 18, 22, 24, 16]),\n",
       " 'split0_train_score': array([-0.43827122, -0.4017597 , -0.37217384, -0.3550433 , -0.34499215,\n",
       "        -0.34406783, -0.42955768, -0.38766155, -0.36415704, -0.35334653,\n",
       "        -0.33934851, -0.33152971, -0.42523817, -0.38843991, -0.36067451,\n",
       "        -0.34178424, -0.32647323, -0.32541315, -0.42254758, -0.37935599,\n",
       "        -0.3528672 , -0.33842329, -0.33041984, -0.31639   ]),\n",
       " 'split1_train_score': array([-0.42709684, -0.39815952, -0.3721129 , -0.35663964, -0.34273342,\n",
       "        -0.33782809, -0.426439  , -0.38695781, -0.36955001, -0.34985218,\n",
       "        -0.34213608, -0.3347708 , -0.42040013, -0.38257882, -0.36121708,\n",
       "        -0.34121416, -0.3306171 , -0.32877542, -0.41393438, -0.37572003,\n",
       "        -0.35303123, -0.33979989, -0.32483488, -0.32324313]),\n",
       " 'split2_train_score': array([-0.43667056, -0.39954867, -0.36985433, -0.35665034, -0.34374401,\n",
       "        -0.34273574, -0.42801457, -0.39138746, -0.36179106, -0.34797063,\n",
       "        -0.33619101, -0.33068843, -0.42308178, -0.38476245, -0.35957625,\n",
       "        -0.34272232, -0.32647935, -0.32630236, -0.41588249, -0.37836744,\n",
       "        -0.34865156, -0.33423931, -0.32684131, -0.32576024]),\n",
       " 'split3_train_score': array([-0.4476455 , -0.40929146, -0.38208952, -0.36379347, -0.35926381,\n",
       "        -0.35521134, -0.44075272, -0.4052702 , -0.38173568, -0.36290577,\n",
       "        -0.34520401, -0.3489819 , -0.4311873 , -0.3928685 , -0.36280731,\n",
       "        -0.34951901, -0.34464832, -0.34059407, -0.43029506, -0.39299658,\n",
       "        -0.36340465, -0.34696263, -0.3374941 , -0.33208123]),\n",
       " 'split4_train_score': array([-0.43600128, -0.40861672, -0.38650925, -0.36628125, -0.35784946,\n",
       "        -0.35098343, -0.4344323 , -0.40126444, -0.37224918, -0.35795043,\n",
       "        -0.34778486, -0.3404921 , -0.4306899 , -0.39226867, -0.36605938,\n",
       "        -0.35385715, -0.34275773, -0.33874019, -0.42445886, -0.39157692,\n",
       "        -0.36103431, -0.35251873, -0.34118525, -0.32823239]),\n",
       " 'mean_train_score': array([-0.43713708, -0.40347521, -0.37654797, -0.3596816 , -0.34971657,\n",
       "        -0.34616529, -0.43183925, -0.39450829, -0.36989659, -0.35440511,\n",
       "        -0.34213289, -0.33729259, -0.42611945, -0.38818367, -0.36206691,\n",
       "        -0.34581937, -0.33419515, -0.33196504, -0.42142367, -0.38360339,\n",
       "        -0.35579779, -0.34238877, -0.33215508, -0.3251414 ]),\n",
       " 'std_train_score': array([0.00654259, 0.00462344, 0.00653519, 0.00448149, 0.00726704,\n",
       "        0.00617601, 0.00519943, 0.00741743, 0.00699229, 0.00544211,\n",
       "        0.00410939, 0.00678324, 0.0042258 , 0.00404524, 0.00225177,\n",
       "        0.0050075 , 0.00793159, 0.00641139, 0.00593247, 0.00720295,\n",
       "        0.00552442, 0.00651732, 0.0062431 , 0.00525907])}"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch3_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.717912 using {'colsample_bytree': 0.6, 'subsample': 0.7}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第五步：调整正则化参数：reg_alpha 和reg_lambda"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [3.5, 4.0, 4.5, 5.0, 5.5], 'reg_lambda': [2.5, 3.0, 3.5]}"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg_alpha = [3.5,4.0,4.5,5.0,5.5]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [2.5,3.0,3.5]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_1 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_1\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "global best_n_estimator\n",
    "global best_max_depth\n",
    "global best_min_child_weight\n",
    "global best_subsample\n",
    "global best_colsample_bytree\n",
    "global best_reg_alpha\n",
    "global best_reg_lambda\n",
    "\n",
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=best_n_estimator,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=best_max_depth,\n",
    "        min_child_weight=best_min_child_weight,\n",
    "        gamma=0,\n",
    "        subsample=best_subsample,\n",
    "        colsample_bytree=best_colsample_bytree,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        nthread = 4)\n",
    "\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test5_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_\n",
    "\n",
    "best_reg_alpha = gsearch5_1.best_params_['reg_alpha']\n",
    "best_reg_lambda = gsearch5_1.best_params_['reg_lambda']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.43299994, 0.85680003, 2.38500004, 1.17740002, 1.73760004,\n",
       "        1.73379993, 1.44559999, 1.53380008, 1.33540001, 1.66399994,\n",
       "        1.76760001, 1.17799997, 1.85880003, 1.43399997, 0.89699998]),\n",
       " 'std_fit_time': array([0.02544804, 0.39161278, 0.62819964, 0.38055414, 0.69838022,\n",
       "        0.95066228, 0.51627189, 0.65224241, 0.57030583, 0.90138122,\n",
       "        0.75856537, 0.37480772, 0.63965402, 0.55606296, 0.09743716]),\n",
       " 'mean_score_time': array([0.00400009, 0.00580001, 0.00839992, 0.00599995, 0.00900002,\n",
       "        0.0065999 , 0.00559993, 0.00639997, 0.00820003, 0.00779996,\n",
       "        0.00740004, 0.00879998, 0.00619993, 0.00700006, 0.004     ]),\n",
       " 'std_score_time': array([0.00063249, 0.00278551, 0.00422382, 0.00109545, 0.00374163,\n",
       "        0.00101979, 0.00048994, 0.00174347, 0.00256128, 0.00312406,\n",
       "        0.00387807, 0.00278566, 0.00146963, 0.00141431, 0.00089431]),\n",
       " 'param_reg_alpha': masked_array(data=[3.5, 3.5, 3.5, 4.0, 4.0, 4.0, 4.5, 4.5, 4.5, 5.0, 5.0,\n",
       "                    5.0, 5.5, 5.5, 5.5],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_reg_lambda': masked_array(data=[2.5, 3.0, 3.5, 2.5, 3.0, 3.5, 2.5, 3.0, 3.5, 2.5, 3.0,\n",
       "                    3.5, 2.5, 3.0, 3.5],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'reg_alpha': 3.5, 'reg_lambda': 2.5},\n",
       "  {'reg_alpha': 3.5, 'reg_lambda': 3.0},\n",
       "  {'reg_alpha': 3.5, 'reg_lambda': 3.5},\n",
       "  {'reg_alpha': 4.0, 'reg_lambda': 2.5},\n",
       "  {'reg_alpha': 4.0, 'reg_lambda': 3.0},\n",
       "  {'reg_alpha': 4.0, 'reg_lambda': 3.5},\n",
       "  {'reg_alpha': 4.5, 'reg_lambda': 2.5},\n",
       "  {'reg_alpha': 4.5, 'reg_lambda': 3.0},\n",
       "  {'reg_alpha': 4.5, 'reg_lambda': 3.5},\n",
       "  {'reg_alpha': 5.0, 'reg_lambda': 2.5},\n",
       "  {'reg_alpha': 5.0, 'reg_lambda': 3.0},\n",
       "  {'reg_alpha': 5.0, 'reg_lambda': 3.5},\n",
       "  {'reg_alpha': 5.5, 'reg_lambda': 2.5},\n",
       "  {'reg_alpha': 5.5, 'reg_lambda': 3.0},\n",
       "  {'reg_alpha': 5.5, 'reg_lambda': 3.5}],\n",
       " 'split0_test_score': array([-0.71426371, -0.71241451, -0.71129187, -0.70972473, -0.70856658,\n",
       "        -0.70809219, -0.70880326, -0.70832525, -0.70859451, -0.71061733,\n",
       "        -0.70867289, -0.70916187, -0.70558004, -0.70772133, -0.70716704]),\n",
       " 'split1_test_score': array([-0.72231372, -0.72347213, -0.72104805, -0.72025524, -0.71914846,\n",
       "        -0.72097216, -0.71642607, -0.71813394, -0.7123317 , -0.71592852,\n",
       "        -0.70626329, -0.71575679, -0.70978788, -0.70763257, -0.71186664]),\n",
       " 'split2_test_score': array([-0.72892599, -0.73166532, -0.73018263, -0.72840592, -0.72010928,\n",
       "        -0.72506981, -0.72419881, -0.72370296, -0.7201763 , -0.72051398,\n",
       "        -0.7210653 , -0.72047724, -0.71864889, -0.71847801, -0.72011986]),\n",
       " 'split3_test_score': array([-0.68073281, -0.68020473, -0.68384871, -0.68039148, -0.67522129,\n",
       "        -0.68078002, -0.67908669, -0.68111017, -0.67917498, -0.68448591,\n",
       "        -0.68377808, -0.68397312, -0.68524651, -0.68814278, -0.68829686]),\n",
       " 'split4_test_score': array([-0.67406644, -0.67605739, -0.67312036, -0.67138321, -0.67121787,\n",
       "        -0.67058427, -0.67340979, -0.67168925, -0.67362438, -0.66917806,\n",
       "        -0.66988763, -0.66790635, -0.67204871, -0.67160276, -0.66982144]),\n",
       " 'mean_test_score': array([-0.70413426, -0.70483138, -0.70396394, -0.70209979, -0.69892339,\n",
       "        -0.70116451, -0.70045003, -0.70065617, -0.69884476, -0.70021233,\n",
       "        -0.69799712, -0.69952152, -0.69831627, -0.69877119, -0.69951058]),\n",
       " 'std_test_score': array([0.02233024, 0.02259584, 0.02182976, 0.02230712, 0.02132864,\n",
       "        0.02170808, 0.02035358, 0.02054776, 0.01871253, 0.01986402,\n",
       "        0.01845505, 0.02015767, 0.01705756, 0.01670102, 0.01810402]),\n",
       " 'rank_test_score': array([14, 15, 13, 12,  5, 11,  9, 10,  4,  8,  1,  7,  2,  3,  6]),\n",
       " 'split0_train_score': array([-0.46986107, -0.46942847, -0.4721431 , -0.48335247, -0.4854248 ,\n",
       "        -0.48696058, -0.49913259, -0.50107927, -0.50345177, -0.51105095,\n",
       "        -0.51272857, -0.51465764, -0.52627895, -0.52722493, -0.5278025 ]),\n",
       " 'split1_train_score': array([-0.46903032, -0.47096543, -0.4740141 , -0.48149688, -0.48248906,\n",
       "        -0.485731  , -0.49589385, -0.50215053, -0.49880695, -0.510405  ,\n",
       "        -0.51339146, -0.5135103 , -0.52104838, -0.5223793 , -0.52492638]),\n",
       " 'split2_train_score': array([-0.46754071, -0.46918519, -0.47142261, -0.48241206, -0.48289268,\n",
       "        -0.48667455, -0.49538087, -0.49814998, -0.50049148, -0.51017045,\n",
       "        -0.51149063, -0.51266403, -0.51982738, -0.52350632, -0.52262446]),\n",
       " 'split3_train_score': array([-0.48106575, -0.48348388, -0.48658565, -0.49562062, -0.49745022,\n",
       "        -0.49918638, -0.50876833, -0.51230201, -0.51247396, -0.52084897,\n",
       "        -0.52294002, -0.52465058, -0.53400074, -0.53605428, -0.53707015]),\n",
       " 'split4_train_score': array([-0.47566892, -0.47736878, -0.48108205, -0.49012235, -0.49227427,\n",
       "        -0.49424867, -0.5025248 , -0.50459335, -0.50472811, -0.51834164,\n",
       "        -0.51910908, -0.52184968, -0.53245183, -0.5323503 , -0.53360217]),\n",
       " 'mean_train_score': array([-0.47263335, -0.47408635, -0.4770495 , -0.48660087, -0.48810621,\n",
       "        -0.49056023, -0.50034009, -0.50365503, -0.50399045, -0.5141634 ,\n",
       "        -0.51593195, -0.51746645, -0.52672145, -0.52830302, -0.52920513]),\n",
       " 'std_train_score': array([0.0050383 , 0.00555959, 0.00586767, 0.00543885, 0.00584134,\n",
       "        0.00528001, 0.00493212, 0.00479279, 0.00473108, 0.00451467,\n",
       "        0.00437375, 0.0048462 , 0.00575731, 0.00521006, 0.00538094])}"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.697997 using {'reg_alpha': 5.0, 'reg_lambda': 3.0}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_1.best_score_, gsearch5_1.best_params_))\n",
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>7.465900e+04</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.0</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.212915</td>\n",
       "      <td>1.544663</td>\n",
       "      <td>3.749033e+03</td>\n",
       "      <td>1658.561183</td>\n",
       "      <td>1631.330597</td>\n",
       "      <td>-0.331748</td>\n",
       "      <td>2.757578</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.015738</td>\n",
       "      <td>15.151623</td>\n",
       "      <td>...</td>\n",
       "      <td>0.001058</td>\n",
       "      <td>0.003094</td>\n",
       "      <td>0.000442</td>\n",
       "      <td>0.188243</td>\n",
       "      <td>0.008653</td>\n",
       "      <td>0.000388</td>\n",
       "      <td>0.027994</td>\n",
       "      <td>0.002156</td>\n",
       "      <td>0.001085</td>\n",
       "      <td>0.000884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.649820</td>\n",
       "      <td>1.107014</td>\n",
       "      <td>9.713092e+03</td>\n",
       "      <td>4771.933806</td>\n",
       "      <td>4482.208640</td>\n",
       "      <td>1.026154</td>\n",
       "      <td>1.497497</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.825815</td>\n",
       "      <td>8.245418</td>\n",
       "      <td>...</td>\n",
       "      <td>0.032922</td>\n",
       "      <td>0.055539</td>\n",
       "      <td>0.021020</td>\n",
       "      <td>0.390908</td>\n",
       "      <td>0.097548</td>\n",
       "      <td>0.019705</td>\n",
       "      <td>0.164957</td>\n",
       "      <td>0.046388</td>\n",
       "      <td>0.032921</td>\n",
       "      <td>0.029720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>-6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.495000e+03</td>\n",
       "      <td>1220.000000</td>\n",
       "      <td>1065.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.150000e+03</td>\n",
       "      <td>1500.000000</td>\n",
       "      <td>1377.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4.100000e+03</td>\n",
       "      <td>1850.000000</td>\n",
       "      <td>1950.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>112.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1.675000e+06</td>\n",
       "      <td>837500.000000</td>\n",
       "      <td>558333.333333</td>\n",
       "      <td>109.000000</td>\n",
       "      <td>115.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          bathrooms      bedrooms         price  price_bathrooms  \\\n",
       "count  74659.000000  74659.000000  7.465900e+04     74659.000000   \n",
       "mean       1.212915      1.544663  3.749033e+03      1658.561183   \n",
       "std        0.649820      1.107014  9.713092e+03      4771.933806   \n",
       "min        0.000000      0.000000  1.000000e+00         0.500000   \n",
       "25%        1.000000      1.000000  2.495000e+03      1220.000000   \n",
       "50%        1.000000      1.000000  3.150000e+03      1500.000000   \n",
       "75%        1.000000      2.000000  4.100000e+03      1850.000000   \n",
       "max      112.000000      7.000000  1.675000e+06    837500.000000   \n",
       "\n",
       "       price_bedrooms     room_diff      room_num     Year         Month  \\\n",
       "count    74659.000000  74659.000000  74659.000000  74659.0  74659.000000   \n",
       "mean      1631.330597     -0.331748      2.757578   2016.0      5.015738   \n",
       "std       4482.208640      1.026154      1.497497      0.0      0.825815   \n",
       "min          0.333333     -6.000000      0.000000   2016.0      4.000000   \n",
       "25%       1065.000000     -1.000000      2.000000   2016.0      4.000000   \n",
       "50%       1377.500000      0.000000      2.000000   2016.0      5.000000   \n",
       "75%       1950.000000      0.000000      4.000000   2016.0      6.000000   \n",
       "max     558333.333333    109.000000    115.000000   2016.0      6.000000   \n",
       "\n",
       "                Day      ...            virtual          walk         walls  \\\n",
       "count  74659.000000      ...       74659.000000  74659.000000  74659.000000   \n",
       "mean      15.151623      ...           0.001058      0.003094      0.000442   \n",
       "std        8.245418      ...           0.032922      0.055539      0.021020   \n",
       "min        1.000000      ...           0.000000      0.000000      0.000000   \n",
       "25%        8.000000      ...           0.000000      0.000000      0.000000   \n",
       "50%       15.000000      ...           0.000000      0.000000      0.000000   \n",
       "75%       22.000000      ...           0.000000      0.000000      0.000000   \n",
       "max       31.000000      ...           2.000000      1.000000      1.000000   \n",
       "\n",
       "                war        washer         water    wheelchair          wifi  \\\n",
       "count  74659.000000  74659.000000  74659.000000  74659.000000  74659.000000   \n",
       "mean       0.188243      0.008653      0.000388      0.027994      0.002156   \n",
       "std        0.390908      0.097548      0.019705      0.164957      0.046388   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        1.000000      2.000000      1.000000      1.000000      1.000000   \n",
       "\n",
       "            windows          work  \n",
       "count  74659.000000  74659.000000  \n",
       "mean       0.001085      0.000884  \n",
       "std        0.032921      0.029720  \n",
       "min        0.000000      0.000000  \n",
       "25%        0.000000      0.000000  \n",
       "50%        0.000000      0.000000  \n",
       "75%        0.000000      0.000000  \n",
       "max        1.000000      1.000000  \n",
       "\n",
       "[8 rows x 227 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# X_test = np.array(test)\n",
    "# X_test.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用训练好的模型预测结果。（由于使用的数据量过小，可能和大数据下的准确率有一定差距）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    }
   ],
   "source": [
    "global best_n_estimator\n",
    "global best_max_depth\n",
    "global best_min_child_weight\n",
    "global best_subsample\n",
    "global best_colsample_bytree\n",
    "global best_reg_alpha\n",
    "global best_reg_lambda\n",
    "\n",
    "xgb_test = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=best_n_estimator,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=best_max_depth,\n",
    "        min_child_weight=best_min_child_weight,\n",
    "        gamma=0,\n",
    "        subsample=best_subsample,\n",
    "        colsample_bytree=best_colsample_bytree,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        nthread = 4,\n",
    "        reg_alpha = best_reg_alpha,\n",
    "        reg_lambda = best_reg_lambda)\n",
    "xgb_test.fit(X_train , y_train)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "y_predict = xgb_test.predict(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2 2 2 ... 2 1 2]\n"
     ]
    }
   ],
   "source": [
    "print(y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "# y_predict.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "74659\n"
     ]
    }
   ],
   "source": [
    "df = pd.DataFrame(y_predict,columns = {'interest_level'})\n",
    "print(len(y_predict))\n",
    "# for i in range(0,len(y_predict)):\n",
    "#     df.loc[i] = (y_predict[i])\n",
    "\n",
    "# print(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>74659.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.853574</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.371636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       interest_level\n",
       "count    74659.000000\n",
       "mean         1.853574\n",
       "std          0.371636\n",
       "min          0.000000\n",
       "25%          2.000000\n",
       "50%          2.000000\n",
       "75%          2.000000\n",
       "max          2.000000"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 保存结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = test.join(df)\n",
    "result.describe()\n",
    "result.to_csv('week3_result.csv') "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Users\\SEELE\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    }
   ],
   "source": [
    "X_train = train_all.drop([\"interest_level\"], axis=1)\n",
    "y_train = train_all['interest_level']\n",
    "y_predict_train = xgb_test.predict(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_accuracy = accuracy_score(y_train, y_predict_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7097787323715351\n"
     ]
    }
   ],
   "source": [
    "print(train_accuracy)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这个是1000个训练集样本对于全训练样本的准确率，也从一定意义上反应了模型的训练效果吧。如果全样本训练的话效果会更佳。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
